Cần bao nhiêu bộ nhớ để giữ một bảng được lưu trữ?(Máy chủ SQL 2008)


5

Tôi chạy các truy vấn dài và phức tạp, chủ yếu sử dụng một bảng lớn - các hàng 8GB, 40M.AFAIK, tất cả/hầu hết các hàng được sử dụng trong mỗi truy vấn.Tôi đang thấy rất nhiều IO trong trình giám sát hoạt động - cho truy vấn đầu tiên và cho mọi truy vấn tiếp theo.Máy chủ hiện đang sử dụng 6,5 GB bộ nhớ và tôi muốn nâng cấp.Câu hỏi là, cần bao nhiêu bộ nhớ để tránh tất cả các đĩa đọc?Có phải trong sân bóng có kích thước của bàn hoặc nhiều hơn?

Đây là đầu ra IO THỐNG KÊ.BigTable là thứ tôi đang hỏi, SmallTable có mối quan hệ 1-nhiều với BigTable.#entrance giữ đầu ra của truy vấn (vài trăm hàng đầu ra).

Table 'SmallTable'. Scan count 249005, logical reads 2829948, physical reads 2605, read-ahead reads 10395, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'BigTable'. Scan count 194004, logical reads 13482115, physical reads 33841, read-ahead reads 1181136, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table '#entrance__000000000023'. Scan count 0, logical reads 1568, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
+2

Liệu máy chủ/cơ sở dữ liệu này có làm gì khác ngoài việc chạy các truy vấn của bạn trên 1 bảng 8GB dữ liệu không?Tôi cũng gãi đầu qua bảng 1 nhưng khía cạnh truy vấn phức tạp của câu hỏi này.Bất kỳ cơ hội của DDL hoặc một chút hiểu biết sâu sắc về bản chất của sự phức tạp này? 14 sep. 112011-09-14 22:20:40

  0

Chỉ cần kiểm tra cơ bản, bạn đang sử dụng phiên bản máy chủ SQL nào?nếu nó không phải là doanh nghiệp thì bạn sẽ không thể sử dụng tất cả bộ nhớ hiện tại của mình cho máy chủ sql. 16 sep. 112011-09-16 15:30:00

  0

Cuối cùng tôi đã nâng cấp RAM của máy chủ và làm một bài kiểm tra.Tôi đã đăng kết quả như một câu trả lời dưới đây. 09 feb. 132013-02-09 08:50:11

3

bản chất của các truy vấn của bạn là gì?CHỌN chỉ?Hoặc một hỗn hợp của DUI (XÓA, CẬP NHẬT, CHỨNG MINH)?và mô hình phục hồi của bạn là gì?bạn đang sử dụng mức cô lập giao dịch mặc định?

Nếu bạn muốn đặt tất cả các trang đó vào bộ nhớ, thì bạn sẽ cần có thêm bộ nhớ (nhưng bạn đã biết điều đó rồi).Bạn muốn biết 'bao nhiêu', nhưng sự thật là tùy thuộc vào bản chất của các truy vấn của bạn, bạn vẫn có thể thấy một số vấn đề I/O ngay cả với đủ bộ nhớ để giữ toàn bộ bảng.

Hãy xem xét tất cả những điều trên ... yeah, ballpark kích thước của bảng trên đĩa là dung lượng bộ nhớ.Đừng ngạc nhiên nếu bạn thấy bạn vẫn còn đĩa I/O sau đó.

  0

Tôi đã nâng cấp RAM máy chủ và "ballpark kích thước của bảng trên đĩa vì dung lượng bộ nhớ" là hoàn toàn chính xác.Xem câu trả lời của tôi dưới đây. 08 feb. 132013-02-08 11:59:48


8

Đây là một câu trả lời hai phần.

Phần đầu tiên là mua càng nhiều RAM càng tốt (miễn là nó sẽ phù hợp với máy chủ).

Phần thứ hai là bạn sẽ luôn thấy đọc trên dữ liệu.Bí quyết là để xem những lần đọc đó là vật lý hay logic.Đọc vật lý đang đi xuống đĩa.Đọc logic được đọc từ vùng đệm trong bộ nhớ.Bạn có thể thấy điều này bằng cách đặt "THIẾT LẬP THỐNG KÊ IO" ở đầu Tập lệnh SQL sau đó chạy nó trong SSMS.Trên tab tin nhắn, bạn sẽ nhận được thông tin IO cụ thể cho từng truy vấn đang được chạy, cụ thể bạn sẽ nhận được số lượng cả hoạt động logic và vật lý (đọc trong trường hợp của bạn) đang diễn ra trên bảng theo bảng.Nếu số đọc vật lý khá cao (những số này về cơ bản là số khối được đọc nhiều đến 8 thì chia cho 1024 để lấy số trong Megs) và sau đó bạn cần thêm RAM.Nếu số đọc logic cao, thì thực tế bạn sẽ không vào đĩa nhưng truy vấn của bạn có thể cần điều chỉnh, tạo chỉ mục, v.v.

(Lưu ý: Đối với mục đích của câu trả lời này, tôi chỉ giả sử các câu lệnh CHỌN. Các thao tác CHERTN/CẬP NHẬT/XÓA phức tạp hơn một chút, nhưng áp dụng các điều cơ bản tương tự.)

  0

Tôi sẽ thử: THIẾT LẬP THỐNG KÊ IO ON và báo cáo lại.Thông tin thêm: Các truy vấn được chọn 100%.Mỗi truy vấn mất vài phút.Máy chủ cũng chạy ứng dụng nhỏ thực hiện truy vấn và kết quả vào Excel, nhưng tôi nghi ngờ điều này ảnh hưởng đến hiệu suất của máy chủ. 15 sep. 112011-09-15 05:00:37

  0

Nếu bạn cần một số trợ giúp để đọc đầu ra, vui lòng đăng kế hoạch thực hiện và thiết lập đầu ra IO STATISTICS IO. 15 sep. 112011-09-15 05:05:59


1

Không chắc chắn rằng nhiều RAM sẽ giúp đỡ ở đây.Tính toán nhanh cho thấy truy vấn của bạn đang xử lý ở đâu đó trong vùng 125GB dữ liệu, khá ấn tượng đối với bảng có chứa 8GB.

(2829948 + 13482115 + 1568) x 8/1048576 = 125GB

270 MB số lần đọc vật lý sẽ chiếm một phần của hoạt động chậm nhưng không có gì nhiều bằng các chi phí trong bộ nhớ.

Bạn sẽ nhận được kết quả tốt hơn khi làm việc lại truy vấn hơn là thêm bộ nhớ bổ sung.Đăng kế hoạch DDL/truy vấn/thực hiện trong một câu hỏi mới và ai đó chắc chắn sẽ có thể giúp đỡ.


3

Tôi luôn đến bữa tiệc muộn.:) Truy vấn này rất có thể có thể được điều chỉnh để có hiệu quả tuyệt vời.Nhưng, đối với câu hỏi có bao nhiêu RAM để lưu trữ một bảng 8 GB ... một câu hỏi sơ bộ là SQL Server có bao nhiêu nút bộ nhớ cho máy chủ?Mỗi nút bộ nhớ (logic tương đương với các nút NUMA vật lý) có bộ đệm bộ đệm được quản lý độc lập.Các tác vụ chạy trên bộ xử lý trong nút đó sẽ chèn các khối vào vùng đệm trong nút đó.

Vì vậy, nếu có toàn bộ các tác vụ sẽ đọc toàn bộ bảng 8 GB sẽ chạy trên một nút NUMA duy nhất, nhóm bộ đệm của nút đó phải có thể chứa bảng 8 GB.Vì vậy, hãy bắt đầu với 8 GB bộ nhớ máy chủ tối đa trên mỗi nút NUMA.Sau đó, hãy bắt đầu tăng nó.Bộ nhớ truy vấn có thể tiêu thụ tới 70% nhóm bộ đệm, chỉ còn lại 30% cho nội dung khối cơ sở dữ liệu.Vì vậy, bảng 8 GB cần không quá 30% bộ nhớ máy chủ tối đa trên một nút NUMA duy nhất cho máy chủ.26 2/3 GB cho bộ nhớ máy chủ tối đa.Mỗi nút NUMA.Nếu SQL Server 2012 của nó, thứ mà SQL Server 2008 R2 và trước đó đã sử dụng bộ cấp phát nhiều trang cho (do đó nằm ngoài phạm vi bộ nhớ máy chủ tối đa) hiện nằm trong phạm vi bộ nhớ máy chủ tối đa và cần được tính đến.Nó phải được bao gồm trong tổng bộ nhớ máy chủ, cho dù đó là một phần của giới hạn bộ nhớ máy chủ tối đa SQL Server hay không.

Ồ vâng ... bất kỳ việc sử dụng bảng tạm thời hoặc sử dụng tempdb khác cũng nên được cung cấp trong bộ nhớ máy chủ tối đa, để không để bảng bị xóa khỏi bộ đệm.

Thêm đủ bộ nhớ cho HĐH Windows (ít nhất 4 GB).Thêm đủ cho các luồng công nhân SQL Server, quy trình lõi SQL Server, các tác vụ SQL Agent, bất kỳ nhu cầu bộ nhớ ứng dụng nào khác.

Trên một máy chủ nút NUMA, tôi sẽ sử dụng khoảng 36 GB RAM với bộ nhớ máy chủ tối đa ít nhất 27 GB để lưu trữ đáng tin cậy bảng 8 GB.Và nếu có nhiều nút NUMA, nó sẽ tăng thêm ít nhất 26 2/3 GB bộ nhớ máy chủ tối đa trên mỗi nút NUMA, cũng như cho các luồng công nhân bổ sung đi kèm với các lõi bổ sung trong các nút NUMA bổ sung.

Mặc dù điều đó có vẻ quá mức, một phần là do cách SQL Server xử lý NUMA.Nhưng bạn có thể gặp may!Nếu một người viết lười biếng duy nhất sẽ đủ, bạn có thể sử dụng cờ theo dõi khởi động 8015 để bỏ qua NUMA và quản lý một nhóm bộ đệm duy nhất.Theo cách đó, khoảng 36 - 40 GB sẽ đủ để duy trì bộ nhớ trong bảng 8 GB cho dù có bao nhiêu nút NUMA trên máy chủ.thảo luận về điều này nhiều hơn một chút trong bài viết trên blog sau đây.Nếu bạn quyết định sử dụng cờ theo dõi 8015, tôi khuyên bạn nên đánh giá cờ theo dõi 8048 cùng với nó, để ngăn sự tranh chấp spinlock leo thang và chờ đợi CMEMTHREAD liên quan đến cấp phát bộ nhớ.http://sqlsasquatch.blogspot.com/2013/02/sql-server-cache-database-working-set.html


2

Tôi đã nâng cấp RAM máy chủ từ 8GB lên 64GB và đã thử nghiệm.Kích thước bảng hiện là 16,05GB và không gian chỉ mục là 187 MB (1 chỉ mục được nhóm và 1 chỉ mục duy nhất).Tôi đã kiểm tra tổng mức sử dụng RAM của máy chủ trước và sau khi chạy truy vấn, tính trung bình mỗi một trong số 137 trường trong bảng.Tổng bộ nhớ tăng từ 4,22GB lên 20,4GB = 16,18GB, chiếm 100,8% kích thước của bảng.SQLRockstar hoàn toàn chính xác khi dự đoán rằng lượng sử dụng RAM là một sân bóng có kích thước của bảng.

Thêm thông tin:

  • Độ đầy đủ của trang của chỉ mục được nhóm là 98,1%
  • Các truy vấn khác trên bảng gây ra không có đĩa IO.
  • Nhà phát triển SQL Server 2008R2
  • Kế hoạch thực hiện cho thấy chỉ số cụm đã được sử dụng