Lý lịch
Tôi đang trong quá trình di chuyển cơ sở dữ liệu 160gb từ MSSQL 2008 (tiêu chuẩn) trên máy chủ Win 2008 với RAM 48gb sang máy chủ mới chạy MSSQL 2012 (phiên bản web 64 bit) trên Win 2012 với 64gb RAM. Máy chủ cũ đang hoạt động và đang tải; máy chủ mới không được sản xuất. Máy chủ mới có 8 tệp tempdb (mỗi tệp 4GB).
Vấn đề
Khi thử nghiệm trên máy chủ mới, tôi thấy các bước trong nhiều truy vấn gây ra cảnh báo đề cập đến "toán tử đã sử dụng tempdb để làm đổ dữ liệu trong khi thực thi". Tôi đã có thể tránh các loại bằng cách viết lại một số truy vấn, nhưng điều này không thực sự giải quyết vấn đề. Các truy vấn tương tự trên máy chủ cũ không gây ra sự cố tràn. Tôi đã đọc được rằng sự cố tràn xảy ra khi MSSQL không thể hoàn thành một thao tác trong bộ nhớ và phải tràn / trang vào tempdb. Tôi có nên lo lắng về sự cố tràn?
Ví dụ
Tôi đã chạy sp_updatestats trên cơ sở dữ liệu, vì vậy số liệu thống kê phải được cập nhật, nhưng bạn sẽ lưu ý rằng có một số khác biệt giữa số lượng hàng ước tính và thực tế.
Bộ nhớ
Tôi đã đặt cài đặt bộ nhớ tối đa cho MSSQL là 58 trên 64gb. Hiện tại MSSQL đã tiêu thụ khoảng 35gb bộ nhớ này, nhưng có bộ chỉ hoạt động 682mb. Máy chủ cũ (mặc dù trong sản xuất, xử lý tải) có 44gb bộ nhớ được cam kết với MSSQL, trong đó 43,5gb trong bộ làm việc của nó.
Tôi không biết liệu sự cố tràn có thể liên quan đến cài đặt bộ nhớ hay không - có ai có ý tưởng gì không? MSSQL hiện có nhiều mẫu RAM dự phòng, vậy tại sao nó lại tràn vào tempdb cho một số loại và khớp băm?