Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Opsi Penyesuaian Kinerja Database Azure SQL

Azure SQL Database adalah penawaran database-as-a-service Microsoft yang menawarkan fleksibilitas dan keamanan yang luar biasa dan, sebagai bagian dari Platform-as-a-Service Microsoft, dapat memanfaatkan fitur tambahan. Karena Azure SQL Database tercakup dalam basis data, ada beberapa perbedaan besar dalam hal penyetelan kinerja.

Menyetel Instance

Banyak item tingkat instans yang telah Anda gunakan untuk mengonfigurasi pada penginstalan penuh adalah terlarang. Beberapa item ini meliputi:

  • Mengatur memori server min dan maksimal
  • Mengaktifkan pengoptimalan untuk beban kerja ad hoc
  • Mengubah ambang biaya untuk paralelisme
  • Mengubah derajat paralelisme maksimum tingkat instance
  • Mengoptimalkan tempdb dengan beberapa file data
  • Lacak bendera

Jangan terlalu kesal dengan beberapa di antaranya. Pernyataan ALTER DATABASE CAKUPAN KONFIGURASI memungkinkan beberapa pengaturan konfigurasi di tingkat database individu. Ini diperkenalkan dengan Azure SQL Database dan di SQL Server yang dimulai dengan SQL Server 2016. Beberapa pengaturan ini meliputi:

  • Hapus cache prosedur
  • Mengatur MAXDOP ke nilai selain nol
  • Setel model estimasi kardinalitas pengoptimal kueri
  • Mengaktifkan atau menonaktifkan perbaikan terbaru pengoptimalan kueri
  • Mengaktifkan atau menonaktifkan sniffing parameter
  • Mengaktifkan atau menonaktifkan cache identitas
  • Mengaktifkan atau menonaktifkan rintisan rencana terkompilasi untuk disimpan dalam cache saat kumpulan dikompilasi untuk pertama kalinya.
  • Mengaktifkan atau menonaktifkan kumpulan statistik eksekusi untuk modul T-SQL yang dikompilasi secara native.
  • Mengaktifkan atau menonaktifkan opsi online secara default untuk pernyataan DDL yang mendukung sintaks ONLINE=ON/OFF.
  • Mengaktifkan atau menonaktifkan opsi default yang dapat dilanjutkan untuk pernyataan DDL yang mendukung sintaks RESUMABLE=ON/OFF.
  • Mengaktifkan atau menonaktifkan fungsionalitas lepas otomatis dari tabel sementara global

Seperti yang Anda lihat dari daftar konfigurasi tercakup, Anda memiliki banyak kontrol dan presisi untuk menyempurnakan perilaku spesifik untuk database individual. Untuk beberapa pelanggan, batasan untuk kontrol tingkat instans mungkin berdampak negatif, sementara yang lain akan melihatnya sebagai keuntungan.

Untuk perusahaan yang memiliki database per pelanggan, membutuhkan isolasi lengkap, yang dibangun ke dalam Azure SQL Database. Bagi mereka yang membutuhkan kemampuan tingkat instans SQL Server tetapi ingin memanfaatkan penawaran PaaS Microsoft, ada Instans Terkelola Azure SQL, yang memiliki cakupan instans. Tujuannya adalah untuk memiliki kompatibilitas luas permukaan 100% dengan SQL Server; jadi, Anda dapat mengatur memori server min dan maks, mengaktifkan pengoptimalan untuk beban kerja adhoc, dan mengubah MAXDOP dan ambang biaya untuk paralelisme. Tempdb pada Instans Terkelola sudah memiliki banyak file, tetapi Anda dapat menambahkan lebih banyak, dan meningkatkan ukuran default. Dalam banyak hal, ini benar-benar terasa seperti penginstalan penuh SQL Server.

Penyesuaian Kueri

Perbedaan lain antara Azure SQL Database dan SQL Server adalah bahwa Query Store diaktifkan secara default di Azure SQL Database. Anda dapat menonaktifkan penyimpanan kueri, tetapi kemudian Anda membatasi alat kinerja cerdas di Portal Azure yang menggunakannya. Penyimpanan Kueri adalah fitur yang memberikan wawasan tentang kinerja kueri dan pilihan paket. Penyimpanan Kueri juga menangkap riwayat kueri, rencana, dan statistik waktu proses sehingga Anda dapat meninjau apa yang sedang terjadi. Apakah Anda ingin tahu kueri mana yang memiliki waktu kompilasi ulang tertinggi, waktu eksekusi, jumlah eksekusi, penggunaan CPU, penggunaan memori, pembacaan/penulisan fisik paling banyak, dan banyak lagi? Query Store memiliki informasi itu. Untuk SQL Server, Anda harus mengaktifkan fitur ini per database. Jika Anda baru mengenal Query Store, rekan saya Erin Stellato memiliki kursus tiga jam tentang Pluralsight yang akan membantu Anda memulai.

Kategori alat Kinerja Cerdas memiliki empat fitur. Pertama, tinjauan kinerja memberikan ringkasan kinerja basis data Anda secara keseluruhan dengan mencantumkan 5 kueri teratas berdasarkan konsumsi CPU, rekomendasi apa pun dari penyetelan otomatis, aktivitas penyetelan, dan pengaturan penyetelan otomatis saat ini. Halaman arahan ini memberi Anda gambaran sekilas tentang kinerja Anda.

Kedua, opsi rekomendasi kinerja akan mencantumkan rekomendasi saat ini untuk pembuatan indeks atau jika ada indeks yang harus dihapus. Jika ada tindakan terbaru yang telah diselesaikan, Anda juga akan melihat riwayatnya.

Ketiga, Query Performance Insight adalah tempat Anda dapat menemukan wawasan yang lebih dalam tentang konsumsi sumber daya Anda dengan melihat 5 kueri teratas menurut CPU, I/O Data, atau I/O Log. 5 kueri teratas diberi kode warna sehingga Anda dapat dengan cepat melihat persentase konsumsi keseluruhan secara visual. Anda dapat mengklik id kueri untuk mendapatkan detail lebih lanjut termasuk teks SQL. Ada juga tab kueri yang berjalan lama. Saya sangat suka bahwa Microsoft telah menyertakan fitur seperti ini di Portal Azure tanpa biaya. Ini memberikan nilai dengan memberi pelanggan portal untuk melihat kueri yang paling menyinggung. Apa yang saya temukan menantang di sini adalah memiliki cara untuk melihat garis dasar keseluruhan untuk perbandingan hari ke hari, minggu ke minggu, dan bulan sebelumnya. Namun, untuk analisis dan ikhtisar cepat, Query Performance Insight sangat membantu.

Fitur terakhir dalam kategori ini adalah penyetelan otomatis. Di sinilah Anda dapat mengonfigurasi rencana paksa, membuat indeks, dan menjatuhkan pengaturan indeks. Anda dapat mengaktifkan, menonaktifkan, atau memilih untuk mewarisi dari server. Paket paksa memungkinkan Azure untuk memilih apa yang dirasa lebih baik dari rencana eksekusi untuk kueri yang diregresi. Fitur ini juga ada di SQL Server 2017 Enterprise Edition sebagai koreksi paket otomatis. Beberapa DBA merasa gugup saat mendengar tentang fitur penyetelan otomatis, karena mereka khawatir hal itu dapat menggantikan kebutuhan DBA di masa mendatang. Saya selalu suka mengajukan pertanyaan, "Berapa banyak waktu yang Anda habiskan setiap hari untuk secara proaktif menyetel kueri?". Tanggapan yang luar biasa adalah bahwa orang benar-benar dapat menghabiskan sangat sedikit waktu untuk menyetel secara proaktif, dan sebagian besar menjawab bahwa satu-satunya waktu mereka benar-benar 'menyetel' adalah setelah rilis kode atau ketika pengguna mulai mengeluh.

Selain alat bawaan dan memiliki nilai penggunaan Query Store, DMV juga tersedia. Glenn Berry memiliki seluruh koleksi skrip hanya untuk Azure SQL Database yang dapat Anda manfaatkan. Satu DMV tertentu yang ingin saya panggil adalah sys.dm_os_wait_stats. Ini akan menarik dari tingkat server, jadi jika Anda benar-benar ingin melihat statistik tunggu untuk tingkat basis data, Anda harus menggunakan sys.dm_db_wait_stats sebagai gantinya.

Perangkat Keras – Penskalaan

Area pertimbangan lain ketika melihat kinerja dengan Azure SQL Database adalah perangkat keras yang mendasarinya. Azure SQL Database dihargai berdasarkan Unit Transaksi Basis Data (DTU) dan vCores. DTU adalah ukuran campuran CPU, memori, dan I/O, dan hadir dalam tiga tingkatan; Dasar, Standar, dan Premium. Basic hanya 5 DTU, Standar berkisar 10-3.000 DTU, dan Premium berkisar 125-4.000 DTU. Untuk tingkatan berbasis vCore, kami memiliki Tujuan Umum dan Kritis Bisnis mulai dari 1-80 vCore.

Dalam model DTU, Basic harus dipertimbangkan untuk pengembangan dan pengujian. Ini hanya memiliki penyimpanan cadangan 7 hari jadi saya tidak akan menganggapnya layak untuk data produksi apa pun. Standar baik untuk permintaan CPU rendah, sedang, dan tinggi dengan permintaan I/O sedang hingga rendah. Tingkat Dasar dan Standar menawarkan 2,5 IOPS per DTU dengan 5 md (baca), 10 md (tulis). Tingkat Premium ditujukan untuk permintaan CPU sedang hingga tinggi dan I/O tinggi yang menawarkan 48 IOPS per DTU dengan 2 ms (baca/tulis). Tingkat Premium memiliki penyimpanan yang jauh lebih cepat dari standar tersebut. Dalam model vCore, Anda memiliki prosesor Gen4 yang menawarkan RAM 7 GB per inti fisik dan prosesor Gen 5 yang menawarkan RAM 5,1 GB per inti logis. Dari perspektif I/O, General Purpose menawarkan 500 IOPS per vCore dengan maks. 7.000. Business Critical menawarkan 5.000 IOPS per inti dengan maksimum 200.000.

Ringkasan

Azure SQL Database sangat bagus untuk sistem yang memerlukan isolasi database sementara Azure SQL Managed Instance sangat bagus untuk lingkungan di mana Anda memerlukan kompatibilitas tingkat instans (dukungan kueri lintas database). Saat Anda perlu menyetel Azure SQL Database, Anda harus melakukan hal-hal di level basis data karena opsi level instans terlarang, jadi pengaturan konfigurasi cakupan basis data adalah opsi penyempurnaan Anda. Dengan pemecahan masalah kueri berkinerja buruk, Anda memiliki beberapa alat bawaan yang membantu, termasuk Penyimpanan Kueri, dan sebagian besar skrip penyetelan reguler Anda akan berfungsi. Anda mungkin masih membutuhkan lebih banyak, seperti garis dasar, lebih banyak data historis, dan kemampuan untuk membuat kondisi penasihat untuk membantu Anda mengelola beban kerja Anda. Di sinilah solusi pemantauan yang kuat seperti SentryOne DB Sentry dapat membantu.

Ketika semuanya gagal, atau beban kerja Anda baru saja meningkat melewati sumber daya perangkat keras Anda saat ini, skalakan ke tingkat yang lebih tinggi.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa itu Hubungan Satu-ke-Banyak dalam Basis Data? Penjelasan dengan Contoh

  2. Alamat OGG-01224 sudah digunakan

  3. Sistem Manajemen Database Berukuran Besar:Desain dan Arsitek

  4. Model Basis Data untuk Survei Online. Bagian 3

  5. Karena Anda perlu tahu PowerShell