Cài đặt bộ nhớ tối đa trong SQL Server


11

Tôi đang chạy SQL Server 2008 và một ứng dụng dựa trên web, trên một máy chủ chuyên dụng, chỉ có sẵn 2Gb bộ nhớ.

Như đã lưu ý ở nơi khác, SQL Server thường xuyên chiếm tới 98% bộ nhớ vật lý, điều này dường như làm chậm ứng dụng web đang chạy trên máy chủ.

Trong Thuộc tính máy chủ trong SSMS, trong Bộ nhớ, Bộ nhớ máy chủ tối đa (tính bằng Mb) được đặt thành: 2147483647 Máy chủ Sql

Câu hỏi của tôi là, số nào được đề xuất để đặt vào hộp bộ nhớ máy chủ tối đa, với số lượng bộ nhớ tôi có sẵn và cùng một máy chủ cũng đang chạy ứng dụng web?

Ngoài ra, có an toàn để thực hiện thay đổi số này không, trong khi SQL Server đang chạy?

Cảm ơn vì lời khuyên của bạn.


2
Một bài viết gần đây tôi đã viết về cam kết quá mức bộ nhớ trên Máy chủ SQL có thể hữu ích cho bạn đọc.
Jon Seigel

Câu trả lời:


13

Tôi sẽ trả lời câu hỏi cuối cùng trước: Có, bạn có thể thay đổi nó trong khi máy chủ đang chạy mà không gặp vấn đề gì. Nếu bạn muốn thay đổi giá trị qua SQL, bạn có thể thực hiện với truy vấn sau

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'max server memory', 4096;
GO
RECONFIGURE;
GO

Xem trang này để biết thêm chi tiết về cài đặt bộ nhớ trên máy chủ SQL.


Câu hỏi đầu tiên của bạn, không may là câu trả lời là: Tôi không thể nói với bạn, tôi không ở đó.

Có 1.000.000 điều bạn cần tính đến khi phân bổ bộ nhớ. Làm thế nào lớn là tập kết quả từ các truy vấn, tần suất chúng chạy, một truy vấn được sử dụng để mất 20 ms có thể bây giờ mất 200 ms?

Mặc định của Sql giả định rằng đó là thứ duy nhất đang chạy trên máy chủ, do đó, nó chỉ đặt bộ nhớ thành MAX_VALUE và nó sẽ ngừng phát triển khi tất cả bộ nhớ khả dụng đang sử dụng (và trên phần cứng chuyên dụng khá gần với những gì bạn muốn xảy ra (xem Aarons bình luận cho một cảnh báo có thể)). Thông thường, bất kỳ máy chủ web hoặc phần mềm nào khác tương tác với cơ sở dữ liệu sẽ có phần cứng khác nhau giao tiếp với nó qua mạng.

Bạn thực sự chỉ cần đặt nó thành một giá trị mà bạn nghĩ là lành mạnh và nếu máy chủ web của bạn vẫn còn bộ nhớ bị bóp nghẹt. Nếu SQL không cung cấp cho bạn đủ hiệu năng sau khi bạn cung cấp cho máy chủ web bộ nhớ thì bạn cần mua thêm ram hoặc chuyển SQL sang phần cứng chuyên dụng.


2
Có một Báo cáo hay trong SSMS về bộ nhớ máy chủ SQL: blog.msdn.com/b/buckwoody/archive/2007/10/17/ gợi ý Bạn có thể theo dõi phần nào ăn nhiều bộ nhớ nhất
DiGi

1

Bạn không bao giờ nên cho phép máy chủ sql lấy tất cả bộ nhớ trên hộp .. Nó phụ thuộc vào những gì đang chạy trên hộp đó và hộp có bao nhiêu bộ nhớ, nhưng tôi luôn đảm bảo rằng tôi để lại 10% bộ nhớ cho O \S.


0

Tại công ty hiện tại của tôi, nơi tôi được thuê, tôi luôn sử dụng các cài đặt tối thiểu và tối đa cho SQL Server. Tối đa, nếu máy chủ chỉ được sử dụng cho SQL Server, tôi luôn đặt trên bộ nhớ MAX - 1gb cho HĐH. Tối thiểu trong trường hợp của chúng tôi là 2GB.

Nhưng điều đó đã được chứng minh cho việc cài đặt của chúng tôi. Không phải mọi cài đặt và cách sử dụng đều giống nhau, và tôi vẫn cảm thấy bộ nhớ luôn không hoạt động như bạn muốn;)

Có thể là một điều được biết đến trong trường hợp của bạn, nhưng cũng nhìn vào sự hoán đổi của bộ nhớ. Khi bạn chỉ có 2GB trên máy chủ và bạn có HĐH và SQL Server chạy trên "tải cao", mức tiêu thụ bộ nhớ sẽ quá cao trong đó HĐH sẽ có xu hướng thay đổi. Đảm bảo rằng (các) tệp hoán trang của bạn không có trên ổ đĩa hệ điều hành, nếu không bạn có thể kết thúc với một hệ thống hoàn toàn bị kẹt (đã có trước đó và không thích nó)


-1

Tôi chỉ thay đổi "bộ nhớ máy chủ tối đa" trên máy chủ trực tiếp mà không gặp vấn đề gì. Có vẻ như nó được đặt là 2147483647 theo mặc định trên tất cả các cơ sở dữ liệu (nhưng tôi không biết cách thực sự đọc giá trị của nó từ SQL trước khi thay đổi) ...


-2

Gắn bó với mặc định trong 99% trường hợp. Điều này sẽ cho phép quản lý năng động của bộ nhớ.

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.