Kami punya contoh SQL Server yang digunakan untuk pengarsipan email (milik paket pengarsipan pihak ke-3). Seringkali, perangkat lunak digulingkan ke database kosong baru. Kami telah melakukan ini setiap tiga bulan di masa lalu, tetapi kami ingin melakukannya setiap bulan sekarang. Jumlah data yang diarsipkan sekitar 15 - 20 GB per bulan, dan sebagian besar data hanya berada di beberapa tabel (biasanya 2 - 4).
Setelah kami membuka basis data baru, yang lama digunakan hanya dengan basis read-only. Apa yang ingin saya lakukan adalah mengoptimalkannya menjadi file data yang bagus dan ketat, dengan semua tabel / indeks berdekatan dan memiliki faktor pengisian yang sangat tinggi, dan tidak banyak ruang kosong di akhir file data. Selain itu, kami menggunakan Edisi Standar di server ini, dengan semua batasan yang menyiratkan (kalau tidak saya sudah akan menggunakan kompresi data).
Beberapa kemungkinan yang dapat saya pikirkan:
- REBUIL / REORGANISASI indeks, DBCC SHRINKFILE (Oke, ini bukan pilihan yang masuk akal, karena DBCC SHRINKFILE akan memecah kencing dari apa pun yang disentuhnya, tapi saya memasukkannya untuk kelengkapan.)
- Buat database baru dengan statistik otomatis tidak aktif. Script dan buat ulang semua tabel dari sumber database. Gunakan bcp untuk mengekspor / mengimpor data ke dalam basis data baru, dalam urutan kunci-cluster. Script dan buat ulang semua indeks. Hitung ulang semua statistik dengan pemindaian penuh.
- Buat database baru dengan statistik otomatis tidak aktif. Script dan buat ulang semua tabel dari sumber database. Gunakan SSIS atau T-SQL untuk mentransfer data ke database baru. Script dan buat ulang semua indeks. Hitung ulang semua statistik dengan pemindaian penuh.
Langkah terakhir dalam setiap kasus adalah mengatur basis data ke mode hanya baca.
Pilihan bagus / lebih baik apa yang ada untuk melakukan ini? Kekhawatiran saya adalah memindahkan data sedemikian rupa untuk mempertahankan faktor pengisian tinggi, dan dengan cara yang berdekatan secara logis.
Edit:
Saya harus menyebutkan bahwa sekitar 75% dari data tampaknya disimpan dalam kolom image (LOB).
PRIMARY
?Jawaban:
Untuk menghilangkan fragmentasi fisik dalam file, Anda dapat memindahkan indeks berkerumun dengan drop yang ada ke grup file baru. Karena mereka akan menjadi RO, buatlah semuanya menjadi pengisi 100% karena tidak ada ruang yang diperlukan untuk menyisipkan, pemisahan halaman yang disebabkan oleh pembaruan.
Ini juga akan memungkinkan Anda untuk melakukan pemulihan sedikit demi sedikit dan membawa database online dengan sangat cepat jika Anda memutuskan untuk pergi ke Enterprise. Enterprise juga memungkinkan indeks toko kolom selain secara besar-besaran mengurangi waktu kueri untuk data Hanya Baca ini, yang merupakan fillet masif.
Anda dapat menggunakan opsi shrinkfile sekali sebelum beralih untuk membaca hanya tanpa masalah serius dengan fragmentasi untuk menghapus ruang di akhir file seperti yang Anda inginkan.
Di samping catatan, hanya memeriksa bahwa Anda menggunakan Datatypes terbaru untuk LOBS Anda. yaitu nvarchar (max) atau varchar (max) bukannya ntext atau teks, varbinary (max) bukan gambar?
sumber
Saya menghadapi masalah serupa dengan alat pihak ketiga yang juga menggunakan tipe data gambar untuk menyimpan data yang tidak terstruktur, dan saya menyelesaikannya dengan mengonversi kolom untuk menggunakan filestream . Anda perlu melakukan beberapa pengujian untuk memastikan aplikasi masih berfungsi seperti yang Anda harapkan, tetapi ini akan memberi Anda kemampuan untuk menulis proses pengarsipan Anda sendiri yang memindahkan data Anda ke arsip db secara efisien.
sumber