Theo sách đọc của tôi về SQL Server 2008 Internals và Xử lý sự cố (mượn từ thư viện địa phương ở Illinois) của Christian Bolton, Brent Ozar, v.v. Tôi đang cố gắng tìm hiểu và xác nhận trên máy chủ SQL và rất nhiều tìm kiếm trên web tôi sẽ đánh giá cao nếu có ai đó đánh giá cao có thể xác nhận hoặc sửa chữa sự hiểu biết của tôi.
Mỗi truy vấn hoặc hoạt động yêu cầu cấp bộ nhớ truy vấn sẽ cần bộ nhớ không gian làm việc. Trong truy vấn chung sử dụng Sắp xếp, Ghép nối Hash, Tính song song (Không chắc chắn về điều này), Chèn hàng loạt (không chắc chắn), Lập chỉ mục lại, v.v. sẽ cần bộ nhớ vùng làm việc truy vấn ..
Bộ nhớ vùng làm việc là một phần của nhóm bộ đệm SQL Server (nó được phân bổ như một phần của vùng đệm) và bộ nhớ không gian làm việc tối đa là 75% bộ nhớ được phân bổ cho vùng đệm. Theo mặc định, một truy vấn không thể lấy hơn 25% bộ nhớ vùng làm việc (trong SQL 2008 / SQL 2012 - được điều khiển bởi nhóm tải công việc mặc định của Resource Governor ra khỏi hộp).
Tìm kiếm một xác nhận về sự hiểu biết của tôi
1) Xem xét hệ thống có RAM 48 GB và bộ nhớ máy chủ tối đa được cấu hình thành 40 GB, điều này có nghĩa là bộ nhớ không gian làm việc tối đa bị giới hạn ở 30 GB và một truy vấn không thể có được bộ nhớ vùng làm việc (bộ nhớ truy vấn) hơn 10 GB. Vì vậy, nếu bạn có một truy vấn xấu làm việc với một tỷ hàng đang thực hiện phép băm lớn và cần nhiều hơn 10 GB bộ nhớ (bộ nhớ không gian làm việc), liệu bạn có quan tâm đến hàng đợi cấp bộ nhớ này hay đổ ngay vào đĩa không?
2) Nếu một truy vấn thực hiện thao tác sắp xếp lớn đã được chỉ định bộ nhớ vùng làm việc là 5 MB và trong quá trình thực hiện truy vấn của trình truy vấn nếu trình tối ưu hóa truy vấn nhận ra rằng do thống kê xấu hoặc chỉ mục bị thiếu, truy vấn này thực sự sẽ cần 30 MB bộ nhớ vùng làm việc sẽ ngay lập tức tràn sang tempdb. Ngay cả khi hệ thống có nhiều bộ nhớ không gian làm việc khả dụng trong quá trình thực thi một khi truy vấn vượt quá bộ nhớ không gian làm việc được cấp trong quá trình thực thi, nó sẽ phải tràn vào đĩa. Liệu sự hiểu biết của tôi là chính xác?