Hentikan layanan SQL Server sebelum mendefrag drive?

8

File data basis data SQL Server 2005 produksi kami hidup di drive fisik terpisah, yang dilaporkan oleh alat Disk Defragmenter Microsoft Windows 2003 sebagai 99% terfragmentasi.

Kami menjadwalkan tugas untuk mendefrag drive ini pada jam 3:00 pagi pada hari Sabtu pagi. Pekerjaan selesai setelah 40 menit tanpa kesalahan yang jelas. Namun, drive tetap terfragmentasi.

Haruskah kita menghentikan layanan SQL Server sebelum melakukan defragmentasi?

KONTEKS

Per permintaan untuk konteks: Kami memiliki contoh Microsoft SQL Server 2005 (9.00.5324.00) yang menjalankan Windows Server 2003 (SP2) 32-bit pada perangkat keras Dell PowerEdge 2950, ​​sekitar 2007, dengan RAM 4GB. PowerEdge 2950 memiliki empat drive 68GB yang dikonfigurasi sebagai RAID-1 untuk membuat dua disk virtual 68GB: (1) C (boot dan OS) & D (pagefile, data lain-lain); dan (2) E (data SQL). Sepengetahuan saya, staf TI tidak pernah melakukan defrag pada drive ini ... Disk Defragmenter melaporkan fragmentasi file sebesar 66% (C), 77% (D), dan 99% (E). Monitor Kinerja melaporkan hasil rata-rata berikut: "File halaman:% penggunaan" = ~ 6,8% ; "SQL Server: Buffer Manager - Harapan hidup laman" = 20 detik ; dan "PhysicalDisk: Rata-rata disk / tulis disk, drive E" = antara 300 dan 1,. Kami dijadwalkan untuk pembaruan perangkat keras dan SQL Server yang sangat dibutuhkan dalam waktu beberapa bulan (yaitu, perangkat keras baru, 64-bit Windows Server 2012, 64-bit SQL Server 2012, RAM 12GB), tetapi, karena akhirnya kinerja pengguna, ingin meringankan masalah sebanyak mungkin. Jadi berpikir defrag file mungkin membantu untuk drive E, drive data SQL utama.

Sebagai tambahan, minggu lalu kami menarik dua drive yang gagal dan membangun kembali array ... tidak yakin itu penting. Kami membuat kontrak dengan tim TI lain untuk memelihara server, jadi kami tidak memiliki akses langsung ke peralatan ... organisasi kami hanya membayar untuk layanan.

Kami dapat membayar waktu henti selama jendela pemeliharaan yang dijadwalkan secara rutin (mingguan) serta waktu henti out-of-band, jika perlu, dalam semalam.

iokevins
sumber
6
Apakah Anda memiliki pengukuran apa pun untuk menunjukkan bahwa fragmentasi disk fisik memiliki dampak yang signifikan? Bisakah Anda membayar waktu henti?
Remus Rusanu
2
@RemusRusanu - bagaimana orang tahu jika ada tingkat fragmentasi tertentu yang memiliki efek keseluruhan negatif pada sistem tanpa benar-benar mendefragmentasi itu? Memeriksa jumlah split I / Os melalui Monitor Kinerja mungkin membantu meskipun akan sulit untuk menghubungkannya dengan aktivitas dalam SQL Server. Ngomong-ngomong, ini tidak dimaksudkan sebagai konfrontasi - saya benar-benar ingin tahu!
Max Vernon
4
@ MaxVernon: Demi teori, saya kira XPerf . Satu juga dapat mengukur berdampingan dengan membuat database yang tidak terfragmentasi pada disk yang sama dan menjalankan beban kerja yang ditangkap. Namun, untuk semua alasan praktis, kemungkinan masalah kinerja yang lazim dalam aplikasi vs karena fragmentasi sangat besar.
Remus Rusanu
3
Pengalaman saya memberitahu saya 99 kali dari 100 (atau lebih) saya pasti akan setuju. Masalah kinerja jauh lebih mungkin sebagai akibat dari beberapa ORM melakukan di SELECT *semua tempat, atau beberapa malpraktik lainnya.
Max Vernon
1
Sebelum Anda membuat perubahan lain, dan tentunya sebelum mencoba defrag, Anda ingin memastikan array telah sepenuhnya dibangun kembali. Dan sebuah saran untuk sistem baru Anda - dapatkan RAM sebanyak yang Anda mampu - Anda ingin sebanyak mungkin data SQL yang diakses secara teratur di memori karena RAM 1.000 kali lebih cepat daripada disk tercepat.
Max Vernon

Jawaban:

2

Saya pribadi telah menggunakan Raxco PerfectDisk (tidak terkait dengan perusahaan atau karyawan mereka dengan cara apa pun) untuk melakukan defrag online SQL Server LUNs. Bekerja dengan baik, jika server sedikit melambat. Saya akan merekomendasikan melakukannya selama periode aktivitas yang lebih ringan. Ketika saya mengatakan "berfungsi dengan sempurna" saya merujuknya tidak merusak volume atau file data SQL.

Defragmenter internal melakukan pekerjaan yang sangat buruk jika struktur tertentu terfragmentasi pada drive. PerfectDisk menunjukkan kepada Anda detail tentang semua item yang terfragmentasi termasuk tabel alokasi NTFS, direktori, stream file alternatif, dll. Dll

Apakah PerfectDisk mendefrag database SQL? http://support.raxco.com/KB/a106/does-perfectdisk-defragment-sql-databases.aspx

Lihat salinan arsip Majalah Berita Technet ini mengenai SQL Server dan fragmentasi: http://web.archive.org/web/20100803204458/http://www.microsoft.com/technet/abouttn/flash/tips/tips_083104.mspx

Max Vernon
sumber
2
Tetapi komentar Remus memiliki banyak manfaat daripada sekadar menunjuk ke suatu produk. Saya tidak percaya saya pernah mendefrag hard disk Windows yang menggunakan SQL, dan belum pernah melihat indikasi kuat yang saya butuhkan. Windows mungkin mengatakan drive terpecah tetapi yang penting adalah apakah SQL Server mengalami masalah karena itu. Dalam banyak kasus saya menduga itu benar-benar tidak masalah dan tidak perlu menjalankan defrag sistem tingkat file sama sekali. Anda mengatakan itu "bekerja dengan sempurna" tetapi apakah Anda benar-benar mengamati peningkatan yang terukur? Bisakah Anda memberikan detail?
Aaron Bertrand
1
Saya setuju, Aaron, untuk sebagian besar kasus fragmentasi fisik pada SQL Server yang direkayasa dengan benar akan memiliki efek yang sangat minim. Bahkan seperti dalam kasus ini di mana pengguna melaporkan fragmentasi 99%. Namun, jika pengguna memiliki database SQL-nya pada LUN yang sama dengan O / S dan itu terjadi pada disk tunggal atau array RAID dengan sejumlah kecil spindel, fragmentasi yang benar-benar berlebihan dapat berdampak.
Max Vernon
1
Dengan "sangat berlebihan", maksud saya seperti ribuan fragmen. Pikirkan ratusan ribu. Saya sudah melihatnya. Bukannya aku bangga atau apa pun!
Max Vernon
Seperti dikatakan Brent Ozar, jika Anda menjalankan SQL Database pada SAN di mana data dibagikan di satu array RAID raksasa, melakukan defrag fisik (dan memang defrag SQL logis) kemungkinan tidak akan memiliki efek positif yang terukur pada keseluruhan kinerja sistem.
Max Vernon
Saya menandai ini sebagai jawaban terbaik saat ini, karena sepertinya "Ya" jika kita menggunakan alat yang tepat. Terima kasih!
iokevins
7

Masalah Anda bukanlah fragmentasi disk. Masalah Anda adalah RAM dan pemindaian tabel aplikasi:

RAM 4GB ... 68GB ... Halaman harapan hidup 20 detik

Anda perlu cara yang lebih RAM. Seperti di server baru Anda harus memiliki cara, cara, cara, cara lebih dari 12GB. Mulai dengan 64 GB, pada dasarnya biaya dime . Dan ya, perbaiki aplikasi Anda untuk menggunakan indeks. 20 detik adalah indikasi yang sangat jelas dari pemindaian tabel yang membuang buffer pool. Anda perlu memperbaiki aplikasi, menambahkan indeks yang diperlukan dan memperbaiki pertanyaan Anda . Untuk kasus Anda, defragmenting drive adalah herring merah seperti herring merah.

Oh, dan tolong pindahkan log untuk memisahkan spindel fisik dari data . Sendirian.

Remus Rusanu
sumber
Remus terima kasih; andai saja saya menguasai dunia .... Kami kontrak dengan vendor pihak ketiga untuk aplikasi tersebut, jadi tidak dalam kendali langsung kami, sayangnya. Saya sangat menghargai wawasan Anda, terima kasih.
iokevins
1
Lebih banyak RAM dan SSD dapat memudahkan Anda dengan anggaran yang cukup ramping. Tetapi aplikasi ini membutuhkan perbaikan.
Remus Rusanu
Sebagai tindak lanjut, setelah defragmenting drive, kinerja hanya sedikit meningkat. Remus tampaknya benar dalam diagnosis masalah RAM.
iokevins
@RemusRusanu bedanya untuk mencoba mengoptimalkan dengan file yang ditempatkan di disk yang berbeda di server virtual (vmware)? Ini adalah pertanyaan umum ketidaktahuan virtualisasi ...
diegohb
-4

Brad McGehee menggambarkannya dengan baik di sini:

http://www.bradmcgehee.com/2011/06/do-you-ever-physically-defragment-your-sql-server-mdf-ldf-files/

... jika Anda membiarkan layanan SQL Server berjalan selama defrag Anda, file database terbuka dan karenanya tidak didefrag sama sekali.

DBA_ANDY
sumber
2
Benar-benar salah. Setidaknya pada versi Windows terbaru. Seperti pada Windows Server 2003+, atau Windows XP +
Max Vernon
1
Semua alat Windows Defrag menggunakan sistem API untuk mendefrag file, dan melakukannya pada tingkat cluster di bawah API akses file. Ini adalah cara folder dapat didefrag dengan volume online.
Max Vernon