Có một ấn phẩm hợp nhất để sao chép BLOB (loại image
), có I / O đĩa tempdb rất cao cho kích thước dữ liệu của tôi. Ấn phẩm chỉ tải về và không có bộ lọc.
I / O đĩa cao là do đồng bộ hóa (khi không có người đăng ký nào được đồng bộ hóa, mọi thứ đều ổn), tương quan mạnh với số lượng người đăng ký. Nó xảy ra ngay cả khi không có dữ liệu nào được thay đổi tại Nhà xuất bản giữa các lần đồng bộ hóa và điều đó làm phiền tôi.
- Kích thước của bảng được nhân rộng: 7MB (tổng số hàng khoảng 100)
- tempdb I / O: ~ 30 MB / giây để ghi (tệp nhật ký và dữ liệu)
- Số lượng người đăng ký: hơn 100 người, mỗi người đồng bộ hóa cứ sau 30 phút (nhiều hơn hoặc ít hơn).
- Thời gian lưu giữ được đặt thành 14 ngày
Sử dụng SQL Server 2008 tại Publisher, SQL Server 2005-2008R2 tại các thuê bao. Tất cả các thuê bao sử dụng đồng bộ hóa Web.
Ngoài ra, đồng bộ hóa tại thuê bao mất rất nhiều thời gian, với nhiều lần xuất hiện replmerg.log
như sau:
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
Đã thử cài đặt @stream_blob_columns
bật và tắt mà không có hiệu lực.
Câu hỏi là: Có nên sử dụng bản sao hợp nhất để gửi các đốm màu này đến người đăng ký không? Chúng tôi có các ấn phẩm khác (mặc dù chúng không có cột BLOB) với nhiều dữ liệu mà không gặp sự cố tempdb. Đây có phải là một lỗ hổng SQL Server hay thiết lập xấu?
Nhà xuất bản và Nhà phân phối cùng một phiên bản, SQL Server 2008 SP4, không thể chắc chắn về Người đăng ký, một số trong số họ có thể không cập nhật. Dù sao, tôi có thể chuẩn bị một môi trường thử nghiệm với một vài người đăng ký có các phiên bản được kiểm soát, nếu nó có vẻ hữu ích.
Xác nhận rằng việc sử dụng tempdb quá mức gây ra bởi việc thực thi sys.sp_MSenumgenerations90
. Đã kiểm tra MSMerge_genhistory
bảng, tìm thấy hơn 1,2 triệu hồ sơ không có pubid
giá trị.
Tìm thấy cuộc trò chuyện này với Guru nhân rộng:
Thực hiện sp_mergemetadataretentioncleanup
không có hiệu lực.
Đã tìm thấy một nhận xét về trường hợp như thế này (quá nhiều hàng trong MSmerge_genhistory
) trong đó xóa các hàng trong đó pubid
null và genstatus
= 1 đã giúp sửa lỗi sao chép.
Các hàng đã bị xóa trong đó pubid
là null (ngụ ý rằng tất cả các thuê bao được đồng bộ hóa và không - sẽ được khởi tạo lại trong "chế độ thủ công") và IO đĩa trở lại bình thường!
Tôi có cảm giác rằng tình huống này có thể được gây ra bởi thực tế là tất cả những Người đăng ký của tôi đều ẩn danh qua WebSync và hầu hết trong số họ có cùng tên máy chủ. Tôi sẽ cố gắng kiểm tra, nếu -hostname
khóa giúp không nhân bản ghi vào MSmerge_genhistory
.