Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Giới hạn bộ nhớ trong SQL Server 2016 SP1

Vài tuần trước, tôi đã tìm hiểu khá kỹ về SQL Server 2016 Service Pack 1. Nhiều tính năng trước đây dành riêng cho Phiên bản Doanh nghiệp đã được tung ra các phiên bản thấp hơn và tôi rất vui khi biết về những thay đổi này.

Tuy nhiên, tôi đang thấy một vài người, giả sử, ít hào hứng hơn tôi một chút.

Điều quan trọng cần lưu ý là những thay đổi ở đây không nhằm cung cấp tính năng tương đương hoàn chỉnh trên tất cả các phiên bản; chúng nhằm mục đích cụ thể là tạo ra một diện tích bề mặt lập trình nhất quán hơn. Giờ đây, khách hàng có thể sử dụng các tính năng như In-Memory OLTP, Columnstore và nén mà không cần lo lắng về (các) phiên bản được nhắm mục tiêu - chỉ về mức độ mở rộng của chúng. Một số tính năng bảo mật dường như không thực sự liên quan đến phiên bản cũng được mở ra. Điều tôi hiểu ít nhất là Luôn được mã hóa; Tôi không hiểu tại sao chỉ khách hàng Doanh nghiệp mới cần bảo vệ những thứ như dữ liệu thẻ tín dụng. Mã hóa dữ liệu minh bạch vẫn chỉ dành cho Doanh nghiệp, trên các phiên bản trước SQL Server 2019, vì đây không thực sự là một tính năng có thể lập trình (có bật hoặc không).

Vậy khách hàng của Standard Edition thực sự có những gì?

Tôi nghĩ rằng vấn đề lớn nhất mà hầu hết mọi người gặp phải là bộ nhớ tối đa trong Standard Edition vẫn bị giới hạn ở 128GB. Họ nhìn vào đó và nói, "Gee, cảm ơn vì tất cả các tính năng, nhưng giới hạn bộ nhớ có nghĩa là tôi thực sự không thể sử dụng chúng."

Tuy nhiên, những thay đổi về diện tích bề mặt mang lại cơ hội cải thiện hiệu suất, ngay cả khi đó không phải là ý định ban đầu của họ (hoặc thậm chí nếu có - tôi không tham gia bất kỳ cuộc họp nào trong số đó). Hãy xem xét kỹ hơn một phần nhỏ của bản in đẹp (từ tài liệu chính thức):

Giới hạn bộ nhớ cho Doanh nghiệp / Chuẩn trong SQL Server 2016 SP1

Người đọc tinh tường sẽ nhận thấy rằng từ ngữ giới hạn vùng đệm đã thay đổi, từ:

Bộ nhớ:Bộ nhớ tối đa được sử dụng cho mỗi phiên bản

Tới:

Bộ nhớ: Kích thước vùng đệm tối đa mỗi trường hợp

Đây là mô tả tốt hơn về những gì thực sự xảy ra trong Standard Edition:giới hạn 128GB chỉ dành cho vùng đệm và các bộ nhớ dành riêng khác có thể cao hơn và cao hơn mức đó (nghĩ rằng các vùng như bộ nhớ cache của gói). Vì vậy, trên thực tế, máy chủ Standard Edition có thể sử dụng 128GB vùng đệm, khi đó bộ nhớ máy chủ tối đa có thể cao hơn và hỗ trợ nhiều bộ nhớ hơn được sử dụng cho các đặt chỗ khác. Tương tự, Express Edition hiện đã được ghi nhận đúng cách để sử dụng 1,4GB cho vùng đệm.

Bạn cũng có thể nhận thấy một số từ ngữ rất cụ thể trong cột ngoài cùng bên trái đó (ví dụ:"mỗi trường hợp" và "mỗi cơ sở dữ liệu") cho các tính năng được hiển thị trong Standard Edition lần đầu tiên. Cụ thể hơn:

  • Phiên bản được giới hạn ở 128GB bộ nhớ cho vùng đệm .
  • Phiên bản có thể có một bổ sung 32GB được phân bổ cho các đối tượng Columnstore, vượt quá giới hạn vùng đệm.
  • Mỗi cơ sở dữ liệu người dùng trên phiên bản có thể có một bổ sung 32GB được phân bổ cho các bảng được tối ưu hóa bộ nhớ, vượt quá và vượt quá giới hạn vùng đệm.

Và rõ ràng như pha lê: Các giới hạn bộ nhớ này cho ColumnStore và In-Memory OLTP KHÔNG bị trừ khỏi giới hạn vùng đệm , miễn là máy chủ có bộ nhớ trên 128GB. Nếu máy chủ có ít hơn 128GB, bạn sẽ thấy các công nghệ này cạnh tranh với bộ nhớ vùng đệm và trên thực tế bị giới hạn ở một% bộ nhớ máy chủ tối đa. Thông tin chi tiết có sẵn trong bài đăng này từ Parikshit Savjani của Microsoft.

Tôi không có sẵn phần cứng để kiểm tra mức độ của điều này, nhưng nếu bạn có một máy có bộ nhớ 256GB hoặc 512GB, về mặt lý thuyết, bạn có thể sử dụng tất cả với một phiên bản Standard Edition duy nhất, nếu bạn có thể - chẳng hạn - trải rộng trong -Dữ liệu bộ nhớ trên các cơ sở dữ liệu có kích thước <=32GB, tổng cộng là 128GB + (32GB * (# cơ sở dữ liệu)). Nếu bạn muốn sử dụng ColumnStore thay vì In-Memory, bạn có thể phân tán dữ liệu của mình trên nhiều phiên bản, mang lại cho bạn (128GB + 32GB) * (# phiên bản). Và bạn có thể kết hợp các chiến lược này cho ((128GB + 32GB ColumnStore) * (# phiên bản)) + (32GB Trong Bộ nhớ * (# cơ sở dữ liệu * # phiên bản)).

Tôi không chắc việc chia nhỏ dữ liệu theo cách này có phù hợp với ứng dụng của bạn hay không; Tôi chỉ gợi ý rằng nó có thể. Một số bạn có thể đã làm một số việc này để sử dụng tốt hơn Standard Edition trên các máy chủ có bộ nhớ trên 128GB.

Đặc biệt với ColumnStore, ngoài việc được phép sử dụng 32GB ngoài vùng đệm, hãy nhớ rằng mức nén bạn có thể nhận được ở đây có nghĩa là bạn thường có thể phù hợp với giới hạn 32GB đó nhiều hơn so với bạn có thể với cùng một dữ liệu trong truyền thống. hàng-cửa hàng. Và nếu bạn không thể sử dụng ColumnStore vì bất kỳ lý do gì (hoặc nó vẫn không vừa với 32GB), thì giờ đây bạn có thể triển khai nén trang hoặc hàng truyền thống - điều này có thể không cho phép bạn đưa toàn bộ cơ sở dữ liệu của mình vào vùng đệm 128GB, nhưng nó có thể cho phép nhiều dữ liệu của bạn được lưu trong bộ nhớ tại bất kỳ thời điểm nào.

Những điều tương tự cũng có thể xảy ra trong Express (ở quy mô thấp hơn), nơi bạn có thể có 1,4 GB cho vùng đệm, nhưng thêm ~ 352 MB mỗi phiên bản đối với ColumnStore và ~ 352 MB trên mỗi cơ sở dữ liệu đối với OLTP trong bộ nhớ.

Nhưng phiên bản Enterprise vẫn có nhiều mặt lợi hại

Có nhiều điểm khác biệt khác để giữ sự quan tâm đến Phiên bản Doanh nghiệp, ngoài giới hạn bộ nhớ không giới hạn - từ việc xây dựng lại trực tuyến và quét vòng quay cho đến Nhóm khả dụng đầy đủ và tất cả các quyền ảo hóa mà bạn có thể thực hiện. Ngay cả các chỉ mục ColumnStore cũng có các cải tiến về hiệu suất được xác định rõ ràng dành riêng cho Phiên bản Doanh nghiệp.

Vì vậy, chỉ vì có một số kỹ thuật sẽ cho phép bạn khai thác nhiều hơn từ Standard Edition, điều đó không có nghĩa là nó sẽ mở rộng một cách kỳ diệu để đáp ứng nhu cầu hiệu suất của bạn. Giống như các bài đăng khác của tôi về "làm điều đó với ngân sách" (ví dụ:phân vùng và các cuốn thứ hai có thể đọc được), bạn chắc chắn có thể dành thời gian và nỗ lực để tìm ra một giải pháp, nhưng nó sẽ chỉ giúp bạn hiểu được cho đến nay. Mục đích của bài đăng này chỉ đơn giản là để chứng minh rằng bạn có thể tiến xa hơn với Standard Edition trong 2016 SP1 hơn bao giờ hết.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết quả SSMS thành Grid - CRLF không được bảo toàn trong sao chép / dán - bất kỳ kỹ thuật nào tốt hơn?

  2. Kết quả SQL động vào bảng tạm thời trong thủ tục SQL Stored

  3. 10 sự thật về giám sát hiệu suất cơ sở dữ liệu có thể khiến bạn ngạc nhiên

  4. Cách tạo công việc trong phiên bản SQL Server Express

  5. ISDATE () Ví dụ trong SQL Server