Điểm:2

Giải phóng bộ nhớ trong Windows Server 2019 cho phiên bản SQL Server?

lá cờ kr

Chúng tôi có Windows Server 2019 Standard (x64) với bộ nhớ 64GB.

Ảnh chụp màn hình bên dưới cho thấy mức sử dụng bộ nhớ ở mức 96% với Máy chủ SQL Windows NT đang chạy và sử dụng 344,5 MB.

nhập mô tả hình ảnh ở đây

Đây là Trình quản lý tác vụ sau khi dừng dịch vụ Máy chủ SQL Windows NT. Mức sử dụng bộ nhớ đã giảm xuống 8%.

nhập mô tả hình ảnh ở đây

tôi bắt đầu dịch vụ Máy chủ SQL Windows NT lần nữa.Trình quản lý tác vụ rất thấp ở mức 9% nhưng máy chủ Sql hiện đang sử dụng nhiều bộ nhớ hơn so với khi mức sử dụng bộ nhớ ở mức 96%. nhập mô tả hình ảnh ở đây

Hai câu hỏi:

  1. Có vấn đề gì với bộ nhớ?
  2. Làm cách nào để giảm mức sử dụng bộ nhớ mà không phải khởi động lại phiên bản máy chủ sql?
lá cờ cn
`Đối với tôi, có vẻ như máy chủ sql đang sử dụng ít bộ nhớ vì mọi thứ khác đang được Windows sử dụng.` 100% đó không phải là Windows.
Điểm:8
lá cờ cn

Bạn đang chạy SQL Server trên máy này, do đó, nó đang làm những gì SQL Server làm - nó dự trữ (gần như) tất cả bộ nhớ khả dụng trên HĐH, để khi nhận được các truy vấn lớn hoặc các hoạt động khác, nó không phải phân bổ RAM , nó đã có nó rồi.

Bạn có một vài lựa chọn.

  1. Chấp nhận nó. Nếu bạn chỉ đang chạy SQL Server trên máy này, thì nó sẽ hoạt động như dự định. Để nó một mình.
  2. Che nó lại. Nếu bạn được yêu cầu chạy các khối lượng công việc khác trên máy chủ này, bạn có thể giới hạn dung lượng RAM mà SQL sẽ dự trữ.

Tôi hoàn toàn sẽ không thực hiện tùy chọn 2 trừ khi SQL không bao giờ sử dụng RAM mà nó sử dụng hết. Bạn sẽ chỉ biết điều này nếu bạn đang đo bộ đếm hiệu suất SQL cấp hệ điều hành và chế độ xem quản lý động cấp SQL.

Bức tranh toàn cảnh, bạn đang thực sự cố gắng giải quyết vấn đề gì? "Giải phóng bộ nhớ" trong trường hợp này là một nhiệm vụ vô nghĩa trừ khi bạn biết rằng bạn đang giải phóng bộ nhớ cho một thứ khác để sử dụng. Bạn có đang gặp sự cố về hiệu suất SQL không và nếu có, làm thế nào bạn xác định được rằng bạn đang bị nghẽn cổ chai do RAM thay vì, chẳng hạn như thiết kế chỉ mục xấu hoặc truy vấn không được tối ưu hóa?

Những gì tôi đang hướng dẫn bạn là sử dụng giám sát thích hợp để chẩn đoán các vấn đề về hiệu suất. Bạn cần biết nhiều về SQL và khá nhiều về Windows để làm điều này. Nếu bạn không phải là DBA, hãy thuê một người hoặc ký một hợp đồng hoặc làm việc với nhà cung cấp phần mềm của bạn nếu đây là SQL cho một sản phẩm đã mua. Nếu đó là thứ mà công ty của bạn tự viết mà không có DBA, hãy lấy một cái.

https://docs.microsoft.com/en-us/sql/relational-databases/performance-monitor/monitor-memory-usage?view=sql-server-ver15

Theo mặc định, một phiên bản SQL Server theo thời gian có thể tiêu thụ hầu hết bộ nhớ hệ điều hành Windows có sẵn trong máy chủ. Một khi bộ nhớ được mua lại, nó sẽ không được giải phóng trừ khi áp lực bộ nhớ được phát hiện. Đây là do thiết kế và không chỉ ra rò rỉ bộ nhớ trong Quá trình máy chủ SQL.

/Chỉnh sửa dựa trên chỉnh sửa của bạn:

Mặc dù tôi không phải là quản trị viên hệ thống, nhưng đối với tôi, có vẻ như máy chủ sql là sử dụng ít bộ nhớ vì mọi thứ khác đang được sử dụng bởi Các cửa sổ.

Bạn gần như chắc chắn sai ở đây. Như tôi đã đề cập ở trên, máy chủ SQL sẽ phân bổ gần như toàn bộ RAM hệ thống theo thời gian. Lượng RAM được sử dụng bởi quy trình sqlserver.exe KHÔNG cho bạn biết lượng RAM mà SQL đã thực sự phân bổ. DMV và những người phản biện sẽ cho bạn biết điều đó.

Tôi sử dụng SSMS để làm việc với cơ sở dữ liệu và tôi trực tiếp nhận thấy mức độ chậm tất cả mọi thứ là. Ngay cả những việc đơn giản như mở khung bảng để xem tất cả các bảng của tôi mất một lúc và đôi khi hết thời gian.

Đừng chạy nó trên máy chủ SQL, hãy chạy nó từ máy trạm của bạn.

rbhat avatar
lá cờ kr
Tôi muốn giảm bộ nhớ của các dịch vụ Windows để máy chủ sql tiêu thụ nhiều bộ nhớ hơn. Nó không nên luôn đứng đầu ở mức 97%.
mfinni avatar
lá cờ cn
Không, bạn thực sự không. Các dịch vụ Windows đi kèm với HĐH đang chạy; để họ một mình.
rbhat avatar
lá cờ kr
Bạn đang nói rằng tiêu đề cột bộ nhớ của trình quản lý tác vụ luôn có màu đỏ là điều bình thường?
mfinni avatar
lá cờ cn
Đọc bài viết mà tôi đã liên kết hoặc chỉ cần đọc đoạn văn có liên quan mà tôi đã trích dẫn trong câu trả lời của mình.
rbhat avatar
lá cờ kr
Tôi đã cập nhật câu hỏi bằng ảnh chụp màn hình của trình quản lý tác vụ sau khi dừng dịch vụ máy chủ sql và bắt đầu lại. Tại sao bộ nhớ hiện ở mức 9% và máy chủ sql hiện sử dụng nhiều bộ nhớ hơn ở mức 96%?
rbhat avatar
lá cờ kr
FYI Tôi chạy SSMS từ máy trạm của mình.
Điểm:8
lá cờ ng

Bạn đang thiếu một chi tiết quan trọng ở đây: SQL Server được Trình quản lý tác vụ hiển thị là chỉ sử dụng 344,5 MB RAM, nhưng nó thực sự đã dự trữ nhiều hơn nữa, gần như tất cả, để sử dụng riêng. Trình quản lý tác vụ sẽ không hiển thị điều này. Các con số trong Trình quản lý tác vụ không thực sự thêm tới 97% bộ nhớ hệ thống, vì bộ nhớ dành riêng không được hiển thị ở đó.

Giả định của bạn rằng gần như tất cả bộ nhớ của bạn đã được sử dụng bởi một thứ khác và do đó, SQL Server không thể sử dụng nhiều hơn 344,5 MB là hoàn toàn sai. Nó không hoạt động như thế này. Trình quản lý tác vụ có thể khá sai lệch, hãy xem bộ đếm hiệu suất thực tế.


Cập nhật để thử giải thích nó tốt hơn.

Máy chủ SQL thiết kế bởi lưu trữ dữ liệu trong bộ nhớ và theo thời gian, nó sẽ sử dụng gần như toàn bộ bộ nhớ khả dụng trong hệ thống; nhưng bộ nhớ này không được hiển thị (hoặc ít nhất là không phải tất cả) trong Trình quản lý tác vụ, vì SQL Server cố gắng chơi tốt và nói với hệ điều hành "Tôi muốn nhiều bộ nhớ này, nhưng nó chỉ dành cho bộ nhớ đệm, tôi có thể tồn tại mà không cần nó, vì vậy hãy thoải mái lấy lại nó nếu bạn cần".Điều này có nghĩa là Trình quản lý tác vụ hiển thị ít bộ nhớ hơn được SQL Server sử dụng so với bộ nhớ thực sự dành riêng.

Đây là không có nghĩa là vấn đề; nó được thực hiện có mục đích và theo thiết kế. "Vấn đề" bạn đang thấy không tồn tại, chỉ có những gì bạn thấy trong Trình quản lý tác vụ là sai lệch.

Nếu bạn dừng SQL Server, tất nhiên nó sẽ giải phóng tất cả bộ nhớ được phân bổ của nó, cả bộ nhớ được hiển thị trong Trình quản lý tác vụ và bộ nhớ (nhiều hơn nữa) không được hiển thị. Khi bạn khởi động lại, nó sẽ sử dụng rất ít bộ nhớ: mức sử dụng sẽ tăng trở lại theo thời gian khi SQL Server tải dữ liệu vào bộ nhớ và lưu vào bộ nhớ cache. Nhưng hầu hết bộ nhớ này, một lần nữa, sẽ không phải được hiển thị trong Trình quản lý tác vụ vì công cụ cụ thể đó không thể nhìn thấy nó.

Tôi cũng sẽ nói thêm rằng nếu SQL Server thực sự cần thiết bộ nhớ, nó sẽ phân bổ nó theo một cách khác và sau đó Trình quản lý tác vụ sẽ hiển thị nó; bạn sẽ thấy 60 GB bộ nhớ được SQL Server sử dụng nếu nó thực sự cần thiết nhiều bộ nhớ đó, thay vì chỉ sử dụng nó cho bộ nhớ đệm.

rbhat avatar
lá cờ kr
Tôi đã cập nhật câu hỏi bằng ảnh chụp màn hình của trình quản lý tác vụ sau khi dừng dịch vụ máy chủ sql và bắt đầu lại. Tại sao bộ nhớ hiện ở mức 9% và máy chủ sql hiện sử dụng nhiều bộ nhớ hơn ở mức 96%?
Massimo avatar
lá cờ ng
Như tôi đã nói, SQL Server *dự trữ bộ nhớ khi nó chạy*. Bộ nhớ dành riêng này không được hiển thị trong Trình quản lý Tác vụ, nhưng nó được SQL Server sử dụng. Nếu bạn khởi động lại nó, tất cả bộ nhớ dự trữ sẽ được giải phóng và mức sử dụng bộ nhớ sẽ giảm xuống; nó sẽ phát triển trở lại theo thời gian và Trình quản lý tác vụ sẽ tiếp tục *không* hiển thị nó.
Massimo avatar
lá cờ ng
Những gì bạn đã làm thực sự chứng minh rằng quá trình sử dụng hết bộ nhớ của bạn * chính xác là * SQL Server, nếu không thì việc khởi động lại nó sẽ không ảnh hưởng đến việc sử dụng bộ nhớ.
lá cờ in
Như một phương pháp hay nhất, nên để lại bao nhiêu bộ nhớ cho HĐH?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.