Mengoptimalkan kinerja BCP untuk data BLOB

13

Saya proses perencanaan migrasi langsung dari database 2TB ke tabel yang dipartisi. Sistem ini secara luas berbicara tentang penyimpanan dokumen, sebagian besar ruang yang dialokasikan untuk LOB antara 50kb dan 500kb, dengan persentase kecil dalam kisaran 500kb hingga 1MB. Bagian dari migrasi akan melibatkan data BCPing dari database lama ke baru.

BCP adalah pendekatan yang lebih disukai karena perpecahan saat ini / historis dalam data memungkinkan penggalian data yang lebih tua secara bertahap (selama periode yang lebih tenang) sebelum beralih terakhir, meminimalkan dampak pada sistem live. Volume data dan ketersediaan penyimpanan menghalangi pembangunan kembali in-situ ke skema partisi .

Saya menduga mungkin ada beberapa peningkatan kinerja yang dapat diperoleh dengan bereksperimen dengan KILOBYTES_PER_BATCH daripada ROWS_PER_BATCH, karena konten BLOB. Disarankan dalam dokumentasi BCP bahwa SQL dapat mengoptimalkan operasi berdasarkan nilai ini.

Apa yang tidak dapat saya temukan adalah petunjuk tentang sifat dari optimasi ini atau di mana untuk memulai pengujian saya. Dalam ketiadaan saran saya akan mencoba berjalan pendek di batas 4/8/16/32 / 64mb untuk memulai.

Mungkin beberapa keuntungan berasal dari mengubah ukuran paket (BCP -a parameter, daripada pengaturan tingkat server) tapi saya cenderung untuk meningkatkan ini ke 65535 maksimum kecuali ada yang punya pendekatan yang lebih rumus.

Mark Storey-Smith
sumber

Jawaban:

12

Ini bukan jawaban langsung untuk pertanyaan Anda, tetapi ada beberapa artikel yang akan Anda manfaatkan dengan membacanya (jika Anda tidak menemukannya terlebih dahulu :-)). Itu adalah tentang memuat banyak data menggunakan salinan bcp / bulk. Saya sudah membaca semuanya dan saya tidak menemukan detail tentang KILOBYTES_PER_BATCH, mereka semua menggunakan ROWS_PER_BATCH, tapi saya yakin Anda akan menemukan informasi berguna lainnya.

dan referensi MSDN yang jelas:

Dalam pengalaman pribadi saya, saya berhasil membuat beban data cepat menggunakan beban paralel dan pengujian dengan beberapa ukuran batch. Saya kira hanya pengujian pribadi yang cocok untuk Anda. Semoga Anda akan menemukan beberapa saran bagus di referensi.

Marian
sumber
Terima kasih, Marian, saya telah menandai beberapa temuan baru dari daftar lengkap itu. Sebagai tugas satu-satunya, banyak langkah tambahan / pemurnian tidak berguna tetapi ada banyak tips di sana yang bisa saya manfaatkan.
Mark Storey-Smith
Yap, saya mengerti, bagi saya juga merupakan tugas satu kali, dan menemukan beberapa hal berguna dalam daftar. Ini tugas yang hebat :-). Anda juga dapat melakukan aplikasi .NET kecil (jika Anda terbiasa dengan .NET), seperti dalam artikel lain dari Linchi Shea: Dampak Kinerja: Skrip Penyisipan Paling Optimal tidak dapat mengalahkan BulkCopy . Anda mungkin menemukan hal yang sama seperti yang dia lakukan :-).
Marian
Karena sepertinya tidak ada panduan khusus BLOB untuk BCP di alam bebas, saya menandai jawaban Anda yang sangat menyeluruh diterima. Terima kasih lagi.
Mark Storey-Smith
Maaf saya tidak bisa membantu Anda lagi, tetapi saya harap Anda menemukan sesuatu yang berguna di dalamnya.
Marian