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

Brent Ozar menjelaskan fragmentasi internal dan eksternal SQL Server

Menurut Microsoft SQL Master, Brent Ozar, dia membuat beberapa keputusan penyetelan kinerja database yang buruk sepanjang karirnya. Beruntung bagi kami, kami dapat mengambil manfaat dari kesalahannya dan tidak harus memikirkan semuanya sendiri. Dia membagikan kebijaksanaannya yang diperoleh dengan susah payah secara gratis selama seri webcast Database Training Days Quest.

Dalam salah satu sesinya, kami mempelajari “Mengapa mendefrag indeks Anda tidak membantu.” Faktanya, itu bisa membuat kinerja database Anda lebih buruk, dan Brent memberi tahu kami alasannya. Sepanjang jalan, dia menekankan pentingnya mengetahui apa yang Anda ukur dalam hal mengoptimalkan kinerja SQL Server.

Fragmentasi internal vs. eksternal

Brent memberi kami tutorial singkat tentang cara SQL Server menyimpan data dalam "halaman" 8 KB. Dalam indeks baru atau yang dibuat ulang, semua halaman penuh dan disimpan secara berurutan. Namun, karena semakin banyak data yang ditambahkan, halaman menjadi terbelah:tidak semua halaman penuh dan halaman menjadi rusak. Inilah perbedaan penting antara fragmentasi internal dan eksternal:

  • Fragmentasi eksternal – mengacu pada halaman yang rusak
  • Fragmentasi internal – mengacu pada ruang kosong pada halaman

Lebih sedikit fokus pada pemisahan halaman

Banyak profesional database fokus pada pemisahan halaman sebagai ukuran fragmentasi database, namun, Brent menjelaskan bahwa angka ini tidak ada artinya karena pemisahan halaman terjadi saat menambahkan baris baru ke tabel kosong dan saat menambahkan halaman baru. Jadi, itu sama sekali tidak membantu.

Bagaimana fragmentasi eksternal dapat memperburuk keadaan

Dalam sesi ini, Brent menegaskan bahwa fragmentasi eksternal bukanlah ukuran kinerja database yang berguna karena urutan halaman tidak banyak berdampak pada kecepatan tugas pemeliharaan, menjalankan kueri dalam RAM, atau membaca data dari disk. Jadi, profesional database yang mencoba memperbaiki fragmentasi eksternal dengan mengatur ulang dan membangun kembali indeks sebenarnya memperburuk kinerja dengan meningkatkan cadangan dan menggunakan lebih banyak waktu pemeliharaan.

Profesional basis data yang mencoba mengurangi fragmentasi eksternal dengan meninggalkan ruang di halaman melalui pengaturan faktor pengisian juga menyebabkan masalah yang lebih buruk daripada yang mereka coba perbaiki. Ini sebagian besar karena Anda hampir tidak pernah harus memasukkan data pada suatu titik di tengah-tengah indeks. Jadi, mencoba menjaga halaman agar tetap teratur dengan menempatkan lebih sedikit data pada setiap halaman sebenarnya menyebabkan fragmentasi internal.

Memantau waktu tunggu

Apa yang harus Anda lakukan? Brent menyarankan pengaturan faktor pengisian ke default 100% (atau setidaknya 80% atau lebih tinggi) dan kemudian membangun kembali indeks untuk mengemasnya kembali. Selanjutnya, fokus pada pemantauan jumlah penyetelan kinerja yang tepat – waktu tunggu. Salah satu cara terbaik untuk melihat berbagai aspek waktu tunggu di seluruh instance database Anda adalah dengan menggunakan alat pemantauan kinerja untuk menunjukkan dengan tepat di mana proses macet.

Untuk lebih banyak lagi wawasan Brent tentang fragmentasi indeks, statistik waktu tunggu, dan apa yang harus Anda lakukan tentang pemeliharaan indeks, dengarkan webcast sesuai permintaan.

Anda juga dapat mengakses lebih banyak saran ahli tentang kinerja database melalui Hari Pelatihan Database Quest.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lewati tabel sebagai parameter ke sql server UDF

  2. Memodifikasi Pekerjaan Agen SQL Server (T-SQL)

  3. NEWID() vs NEWSEQUENTIALID() di SQL Server:Apa Bedanya?

  4. Temukan objek yang rusak di SQL Server

  5. Bagaimana melakukan UPDATE Pass-Through Query di SQL Server