Tại sao SQL Server tiêu thụ nhiều bộ nhớ máy chủ hơn?


36

SQL Server đang tiêu thụ 87,5% RAM máy chủ của tôi. Điều này gần đây đã gây ra rất nhiều nút thắt hiệu suất như chậm. Tôi đã nghiên cứu vấn đề này. Một giải pháp phổ biến tôi có thể tìm thấy trên internet là đặt giới hạn tối đa cho SQL Server. Điều này đã được thực hiện và cải thiện nhiều. Tôi muốn biết tại sao nếu giá trị bộ nhớ tối đa không được đặt thì tại sao SQL Server cứ tiêu tốn tài nguyên


3
Làm thế nào bạn xác định rằng việc sử dụng RAM của SQL Server là nguồn gốc của bất kỳ tắc nghẽn nào? Chậm trong cái gì? Nếu bất cứ điều gì, SQL Server sẽ hiệu quả hơn nếu nó sử dụng càng nhiều RAM càng tốt (hoặc thậm chí nhiều hơn bạn mong đợi hoặc muốn nó). Và nếu bạn có các ứng dụng khác trên máy chủ đang gặp sự cố vì SQL Server đang sử dụng bộ nhớ (như được thiết kế để thực hiện), hãy chuyển chúng sang máy chủ khác .
Aaron Bertrand

Tôi đã sử dụng phương pháp ở đây lucidica.com/help/got-sql-eat-up-ram Hãy cho tôi biết nếu điều đó có ích :) Trân trọng, Nikita.
Nikita Kosousov

Câu trả lời:


48

SQL Server sẽ tiêu thụ nhiều bộ nhớ như bạn sẽ cho phép . Theo mặc định, số đó sẽ bao gồm 100% bộ nhớ số của bạn trên máy. Đó là lý do tại sao bạn nhìn thấy những gì bạn đang thấy. Nếu bạn cung cấp cho SQL Server 24 GB bộ nhớ, thì SQL Server sẽ cố gắng hết sức để sử dụng 24 GB bộ nhớ. Sau đó, bạn có SQL Server và HĐH chiến đấu với tài nguyên và nó sẽ luôn dẫn đến hiệu suất kém.

Khi bạn đặt max server memorygiới hạn cấu hình, bạn sẽ giới hạn số lượng SQL Server có thể phân bổ cho nhóm bộ đệm (hầu như nơi lưu trữ các trang dữ liệu và bộ đệm thủ tục). Có các thư ký bộ nhớ khác trong SQL Server, vì vậy đối với phiên bản cụ thể của bạn (2008 R2 trở xuống), max server memorychỉ cần kiểm soát nhóm bộ đệm. Nhưng đây sẽ luôn là người tiêu dùng bộ nhớ lớn nhất.

Tham khảo TechNet về Hiệu ứng của bộ nhớ máy chủ tối thiểu và tối đa

Các tùy chọn cấu hình bộ nhớ máy chủ tối thiểu và bộ nhớ máy chủ tối đa thiết lập giới hạn trên và dưới đối với lượng bộ nhớ được sử dụng bởi nhóm bộ đệm của Công cụ cơ sở dữ liệu Microsoft SQL Server.

Theo như câu hỏi tôi nên để lại bao nhiêu bộ nhớ cho HĐH , đó là một số liệu thường được tranh luận. Nó thực sự phụ thuộc tất cả, chủ yếu vào những gì các quá trình khác đang chạy trên máy chủ . Miễn là nó là một máy chủ thực sự chuyên dụng (và điều đó gần như không bao giờ xảy ra). Tôi muốn thấy ít nhất 4 GB bộ nhớ cho HĐH (và thậm chí nhiều hơn trên các hộp phần cứng lớn). Nhưng quan trọng nhất, theo dõi có bao nhiêu bộ nhớ không sử dụng. Hãy tự do và cung cấp cho SQL Server nhiều bộ nhớ hơn nếu bạn nhận thấy nhiều thứ khả dụng (có thể được theo dõi thông qua perfmon) và bộ nhớ không sử dụng (tất nhiên, luôn để lại một bộ đệm nhỏ cho các tình huống góc đó).


11

SQL Server được thiết kế để sử dụng tất cả bộ nhớ trên máy chủ theo mặc định. Lý do cho điều này là SQL Server lưu trữ dữ liệu trong cơ sở dữ liệu trong RAM để nó có thể truy cập dữ liệu nhanh hơn có thể nếu cần đọc dữ liệu từ đĩa mỗi khi người dùng cần. Nếu chúng ta cần phải đi đến các đĩa mỗi khi SQL Server cần cùng một dữ liệu lặp đi lặp lại thì các yêu cầu IO sẽ rất cao.

Thông thường tôi khuyên mọi người nên để lại khoảng 4 Gigs RAM cho Windows, nhưng điều đó thực sự phụ thuộc vào số lượng phần mềm đang chạy trên máy chủ, bạn đang sử dụng thành phần nào của SQL Server (không phải tất cả các thành phần tuân theo cài đặt đó), v.v.


6

Điều này hoạt động ngay lập tức mà không cần khởi động lại SQL:

Tùy chọn cấu hình máy chủ bộ nhớ máy chủ

Sử dụng hai tùy chọn bộ nhớ máy chủ, bộ nhớ máy chủ tối thiểubộ nhớ máy chủ tối đa , để cấu hình lại lượng bộ nhớ (tính bằng megabyte) do Trình quản lý bộ nhớ máy chủ SQL quản lý cho một phiên bản của SQL Server. Theo mặc định, SQL Server có thể thay đổi linh hoạt các yêu cầu bộ nhớ dựa trên tài nguyên hệ thống có sẵn.

Quy trình định cấu hình một lượng bộ nhớ cố định Để đặt một lượng bộ nhớ cố định:

  1. Trong Object Explorer, bấm chuột phải vào máy chủ và chọn Thuộc tính.
  2. Nhấp vào nút Bộ nhớ.
  3. Trong Tùy chọn bộ nhớ máy chủ, nhập số lượng bạn muốn cho Bộ nhớ máy chủ tối thiểu và Bộ nhớ máy chủ tối đa.

Sử dụng các cài đặt mặc định để cho phép SQL Server thay đổi linh hoạt các yêu cầu bộ nhớ dựa trên tài nguyên hệ thống có sẵn. Cài đặt mặc định cho bộ nhớ máy chủ tối thiểu là 0 và cài đặt mặc định cho bộ nhớ máy chủ tối đa là 2147483647 megabyte (MB).

Tôi hi vọng cái này giúp được!



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.