Memiliki publikasi gabungan untuk mereplikasi BLOB (tipe image
), mendapat I / O disk tempdb yang sangat tinggi untuk ukuran data saya. Publikasi hanya dapat diunduh dan tidak memiliki filter.
Disk I / O yang tinggi disebabkan oleh sinkronisasi (ketika tidak ada pelanggan yang melakukan sinkronisasi, semuanya baik-baik saja), sangat berkorelasi dengan jumlah pelanggan. Itu terjadi bahkan ketika tidak ada data yang diubah di Publisher di antara sinkronisasi, dan itu mengganggu saya.
- Ukuran tabel yang direplikasi: 7MB (jumlah total baris sekitar 100)
- tempdb I / O: ~ 30 MB / detik untuk menulis (file log dan data)
- Jumlah pelanggan: sedikit di atas 100, masing-masing menyinkronkan setiap 30 menit (lebih atau kurang merata).
- Periode retensi diatur ke 14 hari
Menggunakan SQL Server 2008 di Penerbit, SQL Server 2005-2008R2 di Pelanggan. Semua pelanggan menggunakan Sinkronisasi Web.
Selain itu, sinkronisasi di pelanggan membutuhkan banyak waktu, dengan beberapa kejadian replmerg.log
seperti ini:
DatabaseReconciler, 2015/04/21 12:13:40.348, 3604, 25088, S2, INFO: [WEBSYNC_PROTOCOL] Sending client ReconcilerPhase WebSyncReconcilerPhase_RegularDownload DatabaseReconciler, 2015/04/21 12:13:47.063, 3604, 25194, S2, INFO: [WEBSYNC_PROTOCOL] Received server ReconcilerPhase WebSyncReconcilerPhase_LastRegularDownload
Mencoba @stream_blob_columns
menghidupkan dan mematikan tanpa efek.
The Pertanyaan adalah: Apakah itu ide yang baik untuk replikasi penggunaan gabungan untuk mengirim gumpalan ini untuk pelanggan? Kami memiliki publikasi lain (meskipun mereka tidak memiliki kolom BLOB) dengan banyak data tanpa masalah tempdb. Apakah ini kesalahan SQL Server, atau pengaturan yang buruk?
Penerbit dan Distributor berada pada contoh yang sama, SQL Server 2008 SP4, tidak dapat memastikan tentang Pelanggan, beberapa dari mereka mungkin tidak mutakhir. Lagi pula, saya dapat menyiapkan lingkungan pengujian dengan beberapa pelanggan yang memiliki versi terkontrol, jika tampaknya membantu.
Dikonfirmasi, bahwa penggunaan tempdb berlebihan disebabkan oleh eksekusi sys.sp_MSenumgenerations90
. Diperiksa MSMerge_genhistory
tabel, ditemukan lebih dari 1,2 juta catatan di mana pubid
adalah nol.
Menemukan percakapan ini dengan guru replikasi:
Dieksekusi sp_mergemetadataretentioncleanup
tanpa efek.
Ditemukan komentar pada kasus seperti ini (terlalu banyak baris MSmerge_genhistory
) di mana menghapus baris di mana pubid
nol dan genstatus
= 1 membantu memperbaiki replikasi.
Baris yang dihapus di mana pubid
adalah nol (menyiratkan bahwa semua Pelanggan disinkronkan, dan yang tidak - akan diinisialisasi ulang dalam "mode manual") dan disk IO kembali normal lagi!
Saya mempunyai perasaan, bahwa situasi ini dapat disebabkan oleh fakta, bahwa semua Pelanggan saya anonim melalui WebSync dan kebanyakan dari mereka memiliki nama host yang sama. Saya akan mencoba memeriksa, jika -hostname
kunci membantu untuk tidak menggandakan catatan MSmerge_genhistory
.