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

Cải tiến hiệu suất &khả năng quản lý ẩn trong SQL Server 2012/2014

Vài năm trước, Microsoft đã xuất bản một bài viết Cơ sở Kiến thức rất hữu ích về cách định cấu hình SQL Server 2012 và SQL Server 2014 để có hiệu suất tốt nhất với khối lượng công việc nặng trên phần cứng máy chủ hiện đại, có kích thước lớn hơn. Đồng nghiệp của tôi, Aaron Bertrand và tôi đều có một vai trò nhỏ trong việc hiệu đính bài báo KB gốc. Bài viết KB này đã được cập nhật khá tốt kể từ đó và nó vẫn là một tài liệu tham khảo tuyệt vời cho các tùy chọn cấu hình hữu ích cho SQL Server 2012/2014.

Kể từ đó, Microsoft cũng đã hỗ trợ một số cải tiến hiệu suất rất hữu ích từ SQL Server 2016 sang cả SQL Server 2012 và SQL Server 2014, miễn là bạn đang sử dụng một bản dựng mới đủ của một trong các phiên bản SQL Server cũ hơn này. Microsoft khuyên bạn nên chủ động triển khai cả Gói dịch vụ và Bản cập nhật tích lũy để giảm thiểu khả năng gặp phải các sự cố đã được sửa trong các bản dựng sau của SQL Server.

Như một phần thưởng bổ sung, bạn cũng sẽ nhận được các tính năng mới và các cải tiến khác như tôi mô tả trong bài viết này. Trong hầu hết các trường hợp, bạn sẽ phải bật cờ theo dõi để nhận được lợi ích của những cải tiến hiệu suất này.

Trình quản lý trang bẩn

Đầu tiên là việc sử dụng Dirty Page Manager (DPM) kết hợp với việc bật các điểm kiểm tra gián tiếp cho cơ sở dữ liệu người dùng và hệ thống của bạn trong SQL Server 2012 và SQL Server 2014. Các điểm kiểm tra gián tiếp là mặc định cho các cơ sở dữ liệu mới được tạo trên SQL Server 2016 và nó là cấu hình đề xuất cho phiên bản SQL Server 2016.

Nếu bạn bật Cờ theo dõi 3449 toàn cầu (và bạn đang sử dụng SQL Server 2012 SP3 CU3 trở lên hoặc SQL Server 2014 SP1 CU7 trở lên), bạn sẽ nhận được hiệu suất tốt hơn nhiều bằng cách tránh lệnh gọi FlushCache trong một số trường hợp phổ biến khác nhau, chẳng hạn như cơ sở dữ liệu sao lưu, nhật ký giao dịch sao lưu, tạo cơ sở dữ liệu, thêm tệp vào cơ sở dữ liệu, khôi phục cơ sở dữ liệu, thu nhỏ tệp cơ sở dữ liệu và trong khi máy chủ SQL tắt "duyên dáng". Cờ theo dõi 3449 có hiệu lực ngay lập tức mà không cần khởi động lại. Bạn cũng nên đặt TF 3449 làm cờ theo dõi khởi động.

Việc tránh các lệnh gọi FlushCache này đặc biệt quan trọng khi bạn có một lượng lớn RAM (hơn 256GB) trong máy chủ cơ sở dữ liệu của mình, với lợi ích tăng lên theo kích thước của vùng đệm đang được sử dụng. Bạn có thể đọc chi tiết hơn về tính năng nâng cao này trong bài đăng trên blog này:

Tiếp theo, nếu bạn đang sử dụng SQL Server 2012 SP4 hoặc SQL Server 2014 SP2 (trở lên), bạn sẽ nhận được một số cải tiến hiệu suất mới khác, chẳng hạn như phân vùng Soft NUMA tự động và chia tỷ lệ đối tượng bộ nhớ động đã được giới thiệu ban đầu trong SQL Server 2016 .

Phân vùng NUMA mềm tự động

Trong cả SQL Server 2012 SP4 và SQL Server 2014 SP2, khi bạn đặt Cờ theo dõi 8079 dưới dạng cờ theo dõi khởi động, SQL Server sẽ quét bố cục phần cứng trong quá trình khởi động Engine và tự động định cấu hình Soft NUMA trên các hệ thống báo cáo 8 lõi vật lý trở lên trên mỗi nút NUMA. Hành vi NUMA mềm tự động là nhận biết Siêu phân luồng (HT / bộ xử lý logic), có nghĩa là nó hoạt động với cả Intel Hyper-Threading và AMD SMT. Khi xác định cách bố trí nút NUMA mềm tối ưu, thông tin CPU logic được truy vấn và sử dụng để ngăn chặn việc nhóm các nút chỉ logic và chỉ vật lý có thể dẫn đến các thay đổi về hiệu suất trên các nút NUMA mềm.

Các bộ xử lý máy chủ hiện tại có thể có tối đa 32 lõi vật lý trong một nút NUMA duy nhất có thể gây ra các vấn đề về khả năng mở rộng giống SMP trong một nút NUMA phần cứng duy nhất. Microsoft tuyên bố rằng họ nhận thấy sự cải thiện hiệu suất đáng chú ý từ tính năng này bằng cách sử dụng khai thác thử nghiệm SQL Server 2016 nội bộ của họ:

"Với số mềm tự động nhận biết HT-NUMA, chúng tôi nhận được tới 30% hiệu suất truy vấn khi DOP được đặt thành số lõi vật lý trên một ổ cắm (trong trường hợp này là 12) bằng cách sử dụng NUMA mềm tự động."

Như mọi khi, bạn nên kiểm tra hiệu suất khối lượng công việc của mình bằng NUMA mềm tự động trước khi sử dụng trong sản xuất.

Tỷ lệ đối tượng bộ nhớ động

Trong cả SQL Server 2012 SP4 và SQL Server 2014 SP2, SQL Server sẽ phân vùng động các đối tượng bộ nhớ dựa trên số lượng nút NUMA và lõi bộ xử lý logic để mở rộng quy mô tốt hơn trên phần cứng máy chủ hiện đại. Mục tiêu của xúc tiến động là tự động phân vùng một đối tượng bộ nhớ an toàn luồng (CMEMTHREAD) nếu nó trở thành một nút cổ chai.

Các đối tượng bộ nhớ chưa được phân vùng sẽ được thăng cấp động để được phân vùng bằng nút NUMA (số lượng phân vùng bằng số nút NUMA) dựa trên khối lượng công việc và nút cổ chai, đồng thời các đối tượng bộ nhớ được phân vùng bằng nút NUMA có thể được thúc đẩy thêm để được phân vùng bằng các lõi CPU logic (số lượng phân vùng bằng số lõi CPU hợp lý). Cải tiến này loại bỏ sự cần thiết phải có Cờ theo dõi 8048 khi bạn đã cài đặt SQL 2014 SP2 hoặc SQL Server 2012 SP4.

Cải tiến SOS_RWLock Spinlock

Trong SQL Server 2014 SP2, có những cải tiến (được chuyển lại từ SQL Server 2016) loại bỏ nhu cầu về spinlock cho các hoạt động SOS_RWLock. Microsoft mô tả cải tiến này chi tiết hơn như sau:

"SOS_RWLock là một nguyên thủy đồng bộ hóa được sử dụng ở nhiều nơi khác nhau trong cơ sở mã SQL Server. Như tên của nó, mã có thể có nhiều quyền sở hữu chung (người đọc) hoặc một người (người viết). Cải tiến này loại bỏ nhu cầu về spinlock cho SOS_RWLock và thay vào đó sử dụng kỹ thuật không khóa tương tự như OLTP trong bộ nhớ. Với thay đổi này, nhiều luồng có thể đọc song song cấu trúc dữ liệu được bảo vệ bởi SOS_RWLock mà không chặn lẫn nhau và do đó cung cấp khả năng mở rộng tăng lên. Trước khi có thay đổi này, việc triển khai spinlock cũ hơn chỉ cho phép một luồng có được SOS_RWLock tại một thời điểm thậm chí để đọc cấu trúc dữ liệu. "

Bạn cũng sẽ nhận được một số cải tiến hữu ích về khả năng quản lý trong cả SQL Server 2012 SP4 và SQL Server 2014 SP2. Bạn có thể đọc chi tiết hơn về những cải tiến này trong các bài đăng trên blog này:

  • SQL Server 2012 Gói Dịch vụ 4 (SP4) đã được phát hành!
  • SQL Server 2014 Gói Dịch vụ 2 hiện đã có sẵn !!!

Điểm mấu chốt của tất cả những điều này là nếu bạn đang chạy SQL Server 2012 (không còn hỗ trợ chính vào ngày 11 tháng 7 năm 2017), bạn muốn sử dụng SQL Server 2012 SP4, trong khi nếu bạn đang chạy SQL Server 2014, bạn muốn sử dụng SQL Server 2014 SP2 hoặc mới hơn. Bạn cũng sẽ cần kích hoạt các cờ theo dõi áp dụng và đặt các thuộc tính cơ sở dữ liệu có liên quan để tận dụng những cải tiến này.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn 2 triệu hàng vào SQL Server nhanh chóng

  2. Tại sao lại sử dụng mệnh đề INCLUDE khi tạo chỉ mục?

  3. Hiểu chức năng bảo mật máy chủ SQL HAS_Permis_BY_Name và các trường hợp sử dụng của nó

  4. Chuỗi kết nối cho localdb cho phiên bản 11 là gì

  5. Php gọi tập lệnh cơ sở dữ liệu sao lưu sqlserver, tệp sao lưu được tạo và sau đó xóa