Làm thế nào để giải phóng bộ nhớ SQL Server?


9

Tôi có cài đặt hộp cát SQL Server trên máy tính cục bộ của mình. Tôi đã đặt phiên bản SQL Server bộ nhớ có thể sử dụng đến 1000 mb. Khi chạy một hoạt động chuyên sâu, việc sử dụng bộ nhớ tăng lên đến 1000 mb. Khi hoạt động kết thúc, SQL Server vẫn giữ bộ nhớ. Làm thế nào để giải phóng bộ nhớ này?


2
Bạn min server memorymax server memory cài đặt là gì? Khi SQL Server bảo lưu mức tối thiểu bạn chỉ định, nó sẽ không bao giờ giải phóng nó trừ khi bạn thay đổi cài đặt hoặc trả lại thể hiện. Như James lưu ý, nếu nó dự trữ nhiều hơn mức tối thiểu bạn chỉ định, về lý thuyết, nó sẽ giải phóng nó khi không cần thiết và có áp lực bộ nhớ trên máy.
Nick Chammas

@Nick: bộ nhớ máy chủ tối thiểu: 0 (MB); bộ nhớ máy chủ tối đa: 600 (MB).
jrara

Câu trả lời:


13

Dừng / khởi động dịch vụ, không có gì khác sẽ giải phóng bộ nhớ trở lại HĐH.

Rõ ràng không phải là điều bạn từng muốn làm với một máy chủ hoạt động nhưng hoàn toàn hợp lý cho một hộp cát cục bộ. Với 3 trường hợp khác nhau trên máy tính xách tay của tôi, đó là cách khả thi duy nhất.

Chỉnh sửa theo bình luận của @ Nick.

Như James lưu ý, nếu nó dự trữ nhiều hơn mức tối thiểu bạn chỉ định, về lý thuyết, nó sẽ giải phóng nó khi không cần thiết và có áp lực bộ nhớ trên máy.

Định nghĩa của bạn về "không cần nó" là gì? Khi vùng đệm đã được lấp đầy, nó sẽ không bỏ trang cho đến khi chúng bị biến dạng bởi các trang khác được đưa vào. Nếu bạn muốn bộ nhớ trở lại ngay lập tức, như trường hợp của @jrara, bạn phải dừng lại /khởi đầu.


2
Theo Microsoft : "Trong Windows Server 2003, SQL Server sử dụng API thông báo bộ nhớ QueryMemoryResourceNotificationđể xác định thời điểm nhóm bộ đệm có thể phân bổ bộ nhớ và giải phóng bộ nhớ." Vì vậy, nếu bạn chỉ lo lắng về việc bỏ đói các ứng dụng khác có thể cần bộ nhớ nhiều hơn, về lý thuyết, SQL Server sẽ giải phóng bộ nhớ mà nó không cần khi Windows nói với nó. Lý do duy nhất bạn cần buộc phải phát hành bằng cách khởi động lại phiên bản là nếu cơ chế này không hoạt động như thiết kế hoặc cài đặt bộ nhớ tối thiểu / tối đa của bạn không chính xác.
Nick Chammas

Một bài viết hữu ích khác để làm rõ về msdn.microsoft.com/en-us/l Library / ms178145.aspx này . Miễn là SQL Server đạt đến cài đặt bộ nhớ máy chủ tối thiểu, nó sẽ giải phóng bộ nhớ để đáp ứng với các thông báo bộ nhớ thấp từ HĐH. Theo kinh nghiệm của tôi, nó đã phải khá cực đoan để điều này xảy ra mặc dù.
georgeb

Chính xác là @georgeb_dba, nó sẽ không dễ dàng từ bỏ nó. Xóa, dừng / bắt đầu và lấy lại bộ nhớ máy tính xách tay của bạn ngay lập tức.
Mark Storey-Smith

4
DBCC FREESYSTEMCACHE ('ALL') 
DBCC FREESESSIONCACHE
DBCC FREEPROCCACHE 

sẽ giải phóng hồ bơi.

https://msdn.microsoft.com/en-us/l Library / ms178529.aspx

Nhận xét

Thực thi DBCC FREESYSTEMCACHE xóa bộ đệm kế hoạch cho phiên bản SQL Server. Xóa bộ đệm của kế hoạch gây ra việc biên dịch lại tất cả các kế hoạch thực hiện tiếp theo và có thể làm giảm hiệu suất truy vấn đột ngột, tạm thời. Đối với mỗi kho lưu trữ bộ nhớ cache đã xóa trong bộ đệm của gói, nhật ký lỗi Máy chủ SQL sẽ chứa thông báo thông tin sau: Các hoạt động 'DBCC FREEPROCCACHE' hoặc 'DBCC FREESYSTEMCACHE'. " Thông báo này được ghi lại cứ sau năm phút miễn là bộ đệm được xóa trong khoảng thời gian đó.


1
khá chắc chắn rằng điều này sẽ không thực sự làm giảm dung lượng bộ nhớ mà SQL đã dành riêng ở cấp độ HĐH
Greg

3

Nó sẽ từ bỏ bộ nhớ mà nó không sử dụng tự động khi các ứng dụng khác cố gắng cam kết nó.

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.