Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Peningkatan Kinerja &Pengelolaan Tersembunyi di SQL Server 2012/2014

Beberapa tahun yang lalu, Microsoft menerbitkan artikel Basis Pengetahuan yang sangat berguna tentang cara mengkonfigurasi SQL Server 2012 dan SQL Server 2014 untuk kinerja terbaik dengan beban kerja berat pada perangkat keras server modern berukuran lebih besar. Kolega saya Aaron Bertrand dan saya sama-sama memiliki peran kecil dalam pemeriksaan artikel KB asli. Artikel KB ini telah diperbarui dengan cukup baik sejak saat itu, dan masih merupakan referensi yang bagus untuk opsi konfigurasi yang berguna untuk SQL Server 2012/2014.

Sejak itu, Microsoft juga telah mem-porting sejumlah peningkatan kinerja yang sangat berguna dari SQL Server 2016 ke SQL Server 2012 dan SQL Server 2014, selama Anda menggunakan versi yang cukup baru salah satu dari versi SQL Server yang lebih lama ini. Microsoft menyarankan Anda secara proaktif menyebarkan Paket Layanan dan Pembaruan Kumulatif untuk meminimalkan kemungkinan mengalami masalah yang diperbaiki di versi SQL Server yang lebih baru.

Sebagai bonus tambahan, Anda juga akan mendapatkan fitur baru dan peningkatan lainnya seperti yang saya jelaskan di artikel ini. Dalam kebanyakan kasus, Anda harus mengaktifkan tanda pelacakan untuk mendapatkan manfaat dari peningkatan kinerja ini.

Pengelola Halaman Kotor

Pertama adalah penggunaan Dirty Page Manager (DPM) dalam hubungannya dengan mengaktifkan pos pemeriksaan tidak langsung untuk database pengguna dan sistem Anda di SQL Server 2012 dan SQL Server 2014. Pos pemeriksaan tidak langsung adalah default untuk database baru yang dibuat di SQL Server 2016, dan ini adalah konfigurasi yang disarankan untuk instans SQL Server 2016.

Jika Anda mengaktifkan Trace Flag 3449 global global (dan Anda menggunakan SQL Server 2012 SP3 CU3 atau lebih baru atau SQL Server 2014 SP1 CU7 atau lebih baru), Anda akan mendapatkan kinerja yang jauh lebih baik dengan menghindari panggilan FlushCache di sejumlah skenario umum yang berbeda, seperti database cadangan, log transaksi cadangan, membuat database, menambahkan file ke database, memulihkan database, mengecilkan file database, dan selama shutdown SQL Server "anggun". Trace Flag 3449 segera berlaku, tanpa perlu memulai ulang. Anda juga harus menyetel TF 3449 sebagai tanda pelacakan startup.

Menghindari panggilan FlushCache ini sangat penting ketika Anda memiliki RAM dalam jumlah besar (lebih dari 256GB) di server database Anda, dengan manfaat yang meningkat seiring dengan ukuran kumpulan buffer yang sedang digunakan. Anda dapat membaca tentang peningkatan ini secara lebih rinci di posting blog ini:

Selanjutnya, jika Anda menggunakan SQL Server 2012 SP4 atau SQL Server 2014 SP2 (atau yang lebih baru), Anda akan mendapatkan sejumlah peningkatan kinerja baru lainnya, seperti partisi Soft NUMA otomatis dan penskalaan objek memori dinamis yang awalnya diperkenalkan di SQL Server 2016 .

Partisi NUMA Lunak Otomatis

Di SQL Server 2012 SP4 dan SQL Server 2014 SP2, saat Anda menyetel Trace Flag 8079 sebagai tanda pelacakan startup, SQL Server akan memindai tata letak perangkat keras selama startup Engine dan secara otomatis mengonfigurasi Soft NUMA pada sistem yang melaporkan 8 atau lebih inti fisik per node NUMA. Perilaku NUMA lunak otomatis sadar Hyperthreading (HT/prosesor logis), yang berarti ia bekerja dengan Intel Hyper-Threading dan AMD SMT. Saat menentukan tata letak node NUMA lunak yang optimal, informasi CPU logis ditanyakan dan digunakan untuk mencegah pengelompokan hanya node logis dan fisik saja yang dapat menyebabkan variasi kinerja di seluruh node NUMA lunak.

Prosesor server saat ini dapat memiliki hingga 32 inti fisik dalam satu node NUMA yang dapat mengekspos masalah skalabilitas seperti SMP dalam satu node NUMA perangkat keras. Microsoft mengklaim bahwa mereka melihat peningkatan kinerja yang nyata dari fitur ini menggunakan rangkaian pengujian SQL Server 2016 internal mereka:

"Dengan HT Aware Auto Soft-NUMA, kami mendapatkan peningkatan hingga 30% dalam kinerja kueri saat DOP disetel ke jumlah inti fisik pada soket (12 dalam kasus ini) menggunakan Automatic Soft NUMA."

Seperti biasa, sebaiknya uji kinerja beban kerja Anda dengan Automatic Soft NUMA sebelum menggunakannya dalam produksi.

Penskalaan Objek Memori Dinamis

Di SQL Server 2012 SP4 dan SQL Server 2014 SP2, SQL Server akan secara dinamis mempartisi objek memori berdasarkan jumlah node NUMA dan inti prosesor logis untuk meningkatkan skala pada perangkat keras server modern. Tujuan dari promosi dinamis adalah untuk secara otomatis mempartisi objek memori aman thread (CMEMTHREAD) jika menjadi hambatan.

Objek memori yang tidak dipartisi akan dipromosikan secara dinamis untuk dipartisi oleh NUMA node (jumlah partisi sama dengan jumlah NUMA node) berdasarkan beban kerja dan bottleneck, dan objek memori yang dipartisi oleh NUMA node dapat dipromosikan lebih lanjut untuk dipartisi oleh inti CPU logis (jumlah partisi sama dengan jumlah inti CPU logis). Peningkatan ini menghilangkan kebutuhan untuk Trace Flag 8048 setelah Anda menginstal SQL 2014 SP2 atau SQL Server 2012 SP4.

SOS_RWLock Peningkatan Spinlock

Di SQL Server 2014 SP2, ada peningkatan (sekali lagi porting dari SQL Server 2016) yang menghilangkan kebutuhan akan spinlock untuk operasi SOS_RWLock. Microsoft menjelaskan peningkatan ini secara lebih rinci seperti ini:

"SOS_RWLock adalah primitif sinkronisasi yang digunakan di berbagai tempat di seluruh basis kode SQL Server. Seperti namanya, kode dapat memiliki beberapa kepemilikan bersama (pembaca) atau tunggal (penulis). Peningkatan ini menghilangkan kebutuhan akan spinlock untuk SOS_RWLock dan sebagai gantinya menggunakan teknik bebas kunci mirip dengan OLTP dalam memori. Dengan perubahan ini, banyak utas dapat membaca struktur data yang dilindungi oleh SOS_RWLock secara paralel tanpa memblokir satu sama lain dan dengan demikian memberikan peningkatan skalabilitas. Sebelum perubahan ini, implementasi spinlock yang lebih lama hanya mengizinkan satu utas untuk dapatkan SOS_RWLock sekaligus bahkan untuk membaca struktur data."

Anda juga akan mendapatkan sejumlah peningkatan pengelolaan yang berguna di SQL Server 2012 SP4 dan SQL Server 2014 SP2. Anda dapat membaca tentang peningkatan ini secara lebih rinci di posting blog ini:

  • SQL Server 2012 Service Pack 4 (SP4) Dirilis!
  • SQL Server 2014 Service Pack 2 kini Tersedia !!!

Kunci dari semua ini adalah jika Anda menjalankan SQL Server 2012 (yang tidak lagi didukung pada 11 Juli 2017), Anda ingin menggunakan SQL Server 2012 SP4, sedangkan jika Anda menjalankan SQL Server 2014, Anda ingin menggunakan SQL Server 2014 SP2 atau yang lebih baru. Anda juga perlu mengaktifkan tanda pelacakan yang berlaku dan menyetel properti database yang relevan untuk memanfaatkan peningkatan ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengganti Partisi Tabel di SQL Server:Sebuah Panduan

  2. Bagaimana saya bisa mengunci tabel saat dibaca, menggunakan Entity Framework?

  3. 2 Cara Membuat Tabel Jika Tidak Ada di SQL Server

  4. Tambahkan IIS 7 AppPool Identities sebagai SQL Server Logos

  5. Konversikan UTC Milidetik ke DATETIME di server SQL