Máy chủ SQL không trả lại bộ nhớ - ở cài đặt Bộ nhớ máy chủ tối đa


7

Tôi là người duy nhất làm việc trên máy chủ này và đã làm theo tài liệu về tối ưu hóa việc sử dụng bộ nhớ SQL khi tôi thấy rằng SQL đang sử dụng tất cả bộ nhớ có sẵn của máy chủ.

Một trong những bước tôi đã làm là sửa kích thước bộ nhớ tối đa thành 20 Gb (máy chủ cho mục đích thử nghiệm với bộ nhớ 32 Gb).

Sau khi điều chỉnh, ngày hôm qua, SQL Server chỉ sử dụng 3-4 Gb nhưng hôm nay, nó lại đạt mức sử dụng bộ nhớ tối đa tôi phân bổ.

Tại sao SQL Server giữ tất cả 20 Gb? Điều gì sẽ xảy ra khi người dùng sẽ bắt đầu sử dụng máy chủ nếu kích thước bộ nhớ tối đa đã được sử dụng?

Câu trả lời:


17

Nó đang giữ bộ nhớ đó bởi vì bạn đã sử dụng nó một lần vì vậy, rõ ràng, bạn có thể sẽ sử dụng nó một lần nữa. Đây là cách SQL Server hoạt động: nó sẽ lấy bộ nhớ mà nó cần (tối đa cho phép tối đa bạn cho phép) và sẽ chỉ trả lại cho HĐH nếu HĐH yêu cầu. Nếu bạn không yêu cầu bộ nhớ trở lại từ SQL Server, tại sao bạn lại mong nó từ bỏ nó? Phân bổ và giải phóng bộ nhớ là không hiệu quả và SQL Server không được thiết kế để cung cấp cho bạn bộ nhớ trở lại để bạn có thể để nó ở trạng thái chờ. Vì những lý do tương tự, nó không tự động thu nhỏ tệp cho bạn sau khi bạn xóa hoặc sắp xếp lại dữ liệu: các hoạt động tăng / thu hẹp rất tốn kém và nếu tệp sẽ phát triển lại vào ngày mai ...

Nếu bạn đang chạy SQL Server trên máy tính xách tay của mình, nơi bạn cần bộ nhớ cho các tác vụ khác, thì bạn nên xem xét cài đặt cài đặt bộ nhớ máy chủ tối đa thấp hơn. Bằng cách này, SQL Server sẽ không bao giờ xâm phạm vào bộ nhớ mà bạn nghĩ bạn cần.

Nếu bạn đang chạy SQL Server trên một máy chủ, thì nó thích là thứ duy nhất trên hộp. Nếu máy chủ đang lưu trữ các ứng dụng khác, v.v. cần bộ nhớ, thì bạn có thể giảm bộ nhớ máy chủ tối đa hơn nữa hoặc chuyển các ứng dụng đó sang máy chủ khác. Nếu không có ứng dụng nào khác cần bộ nhớ, vậy tại sao bạn quan tâm liệu nó sử dụng 20 GB, hay 16 GB, hay 12 GB hay 100 MB? Bạn có tạm thời thuê bộ nhớ còn lại cho các máy chủ khác cho đến khi SQL Server cần lại không? Bạn không cung cấp cho nó 20 GB bộ nhớ nên nó sẽ sử dụng 20 GB bộ nhớ?

Hoàn toàn không có lý do gì bạn phải lo lắng rằng SQL Server đang sử dụng dung lượng bộ nhớ mà bạn đã nói là sử dụng được. Đây chính xác là cách nó hoạt động. Khi người dùng chạy các truy vấn đối với máy chủ, có lẽ, họ có thể sẽ truy cập dữ liệu đã có trong bộ nhớ (một phần lớn phân bổ bộ nhớ của SQL Server là vùng đệm). Nếu cơ sở dữ liệu của bạn lớn hơn 20 GB, thì bạn có thể cân nhắc thực sự tăng cài đặt bộ nhớ máy chủ tối đa để sử dụng tốt nhất bộ nhớ và số lượng I / O đến từ đó thay vì đĩa (chậm hơn rất nhiều) . Giảm bộ nhớ máy chủ tối đa một cách giả tạo vì bạn nghĩ Windows cần 12 GB bộ nhớ để hoạt động giống như phân trang vào đĩa - bạn '

Một lần nữa, nếu không có gì khác đang chạy trên máy chủ, không có lý do gì bạn cần nhiều hơn 3 hoặc 4 GB cho HĐH, để lại mọi thứ khác cho SQL Server. Và một lần nữa, bạn không nên lo lắng nếu bạn đã đặt bộ nhớ tối đa của SQL Server thành 28 GB và nó vẫn "sử dụng" 28 GB ngay cả khi tất cả người dùng đã về nhà. Điều này chỉ có nghĩa là vào buổi sáng, sẽ không mất bất kỳ công việc nào để lấy lại tới 28 GB.


1
Cần nói thêm rằng SQL Server là một trong những máy chủ đó (cùng với Exchange) được thiết kế để mở rộng quy mô. Và trong cài đặt lớn hơn, nó là một mình. Luôn luôn. Trong thực tế, SQL Server thường có kế hoạch bố trí đĩa lớn được lên kế hoạch cẩn thận để có được I / O thích hợp. Như Aaron nói, đơn giản là không có lý do gì để trả lại bộ nhớ khi nó đang lưu trữ dữ liệu.
TomTom
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.