SQL Server 2K / 2K5 / 2K8 dan Disk Solid State: Optimalisasi Spesifik?

9

Adakah yang menjalankan SQL Server di solid-state drive? Sudahkah Anda menemukan kiat pengoptimalan spesifik? Saya secara khusus tertarik pada cara-cara untuk mengurangi frekuensi SQL Server melakukan operasi penulisan acak kecil karena mereka adalah musuh kinerja SSD, khususnya drive SSD MLC.

Ada beberapa optimasi yang jelas bisa dilakukan, tentu saja: data read-heavy harus dilayani dari SSD, dan hal-hal yang berat harus diserahkan ke disk spinning tradisional. Itu termasuk log transaksi, tentu saja!

Dengan anggaran yang cukup, tentu saja, orang ingin menggunakan disk SLC SSD seperti X25-E atau seri Vertex Ex atau berbagai penawaran tingkat perusahaan. Tapi saya juga tertarik dengan tips yang mungkin menguntungkan pengaturan SSD MLC. Saya pikir itu area yang menarik. Salah satu klien klien saya memiliki anggaran kecil dan set data yang tumbuh sangat besar dan mereka menghadapi penulisan ulang lengkap hampir seratus pertanyaan untuk mempertahankan tingkat kinerja yang layak. Namun, saya curiga bahwa kurang dari $ 500 RAM dan ruang SSD mungkin memberi mereka keuntungan kinerja yang lebih besar daripada ribuan (mungkin puluhan ribu) dolar waktu pengembang.

John Rose
sumber

Jawaban:

3

Tidak yakin apa yang Anda maksud dengan mengurangi jumlah tulisan kecil, acak yang SQL Server lakukan. SQL Server menulis halaman data hanya selama pos-pos pemeriksaan - jadi satu-satunya cara untuk membatasi jumlah penulisan adalah dengan mengubah interval pos pemeriksaan atau tidak begitu banyak operasi IUD. Apakah Anda bermaksud sesuatu yang lain?

Dalam semua implementasi SSD yang pernah saya lihat (sedikit), ini adalah kebalikan dari apa yang Anda sarankan - penggunaan terbaik SSD tampaknya adalah untuk log transaksi dan tempdb yang sangat berat - pada dasarnya saya adalah yang terbesar. / O kemacetan subsistem dan tempelkan SSD di sana - saat mencari waktu dan latensi direduksi menjadi konstanta rendah.

Periksa makalah penelitian ini yang diproduksi MS (sayangnya tidak terlalu rinci tentang spesifik SQL Server): Migrasi Penyimpanan Server ke SSD: Analisis Pengorbanan .

Semoga ini membantu!

Paul Randal
sumber
Terima kasih atas tautannya ke artikel MS. Sangat pendek tentang spesifik, bukan? :) Sayangnya penulisan acak kecil memang sesuatu yang bisa memberikan SSD cocok. Singkatnya, bahkan untuk menulis kecil (yaitu, 4KB), SSD harus membaca seluruh blok ke dalam memori, memodifikasinya, dan menuliskannya kembali. Hanya saja bagaimana memori flash gen saat ini bekerja. Artikel ikhtisar hebat SSD: anandtech.com/storage/showdoc.aspx?i=3531&p=1
John Rose
2

Anda tidak dapat mengubah karakteristik SQL Server IO. Unit dasar untuk akses disk, untuk file data, adalah halaman 8Kb. Itu akan menulis mereka sebagian besar selama pos pemeriksaan, tetapi juga akan malas menulis mereka ketika bisa.
SQL tidak menunggu menulis ke disk data untuk menyelesaikan sebelum kembali, hanya menulis log yang harus diselesaikan. Jika Anda dapat menyimpan hanya satu log basis data pada disk maka itu akan berurutan menulis dan akan baik-baik saja pada hard disk normal.
Kinerja hit dari sudut pandang SQL adalah ketika harus membaca disk. Jika Anda dapat memberikan lebih banyak memori maka SQL akan menyimpan lebih banyak halaman data dalam memori, yang lebih cepat daripada segala jenis disk, SSD atau lainnya. Jelas Anda juga dapat mengurangi jumlah disk yang dibaca dengan membuat indeks yang sesuai. Saya berharap SSD juga akan membantu dengan pembacaan ini karena mereka cenderung acak dan menunggu drive drive bergerak.
Saya tidak tahu ukuran basis data apa yang kita bicarakan di sini, tetapi apakah Anda mungkin ingin melihat HyperOS. Mereka membuat sata disk yang sebenarnya hanya memuat DDR2 ram stick, dengan SSD atau 2,5 inci disk sebagai cadangan. Pola akses server tidak akan menjadi masalah saat itu. Saya tidak akan menaruh log pada hal seperti ini sekalipun. Log adalah apa yang membuat data Anda tetap konsisten, mereka harus menggunakan media yang andal dan meskipun memiliki cadangan SSD dan baterai dan server mungkin memiliki UPS dll, saya masih akan merasa tidak mudah tentang tidak memiliki log saya pada hard disk nyata dalam beberapa jenis RAID array kegagalan toleran.

pipGeek
sumber
1

Operasi acak kecil adalah musuh disk tradisional, karena latensi head seek ... SSD hebat dalam menangani hal ini.

Dengan operasi sekuensial yang panjang, disk standar berkinerja cukup baik, sehingga tidak akan ada gunanya menggunakan SSD (dari sudut pandang kinerja, tentu saja).

Massimo
sumber
2
SSD sangat bagus untuk operasi baca acak karena latensi pencarian mendekati nol. Mereka kurang gesit pada operasi penulisan acak karena fakta bahwa operasi penulisan SSD melibatkan membaca seluruh blok flash (biasanya, 128KB), memodifikasi konten, dan menulis seluruh blok kembali ke flash. Sedangkan untuk operasi berurutan yang panjang, SSD tingkat konsumen yang lebih baik (Intel, OCZ Vertex, Samsung) mencapai lebih dari 200MB / detik terbaca dan 80MB-150MB menulis, jauh di atas apa yang dapat dihasilkan oleh disk pemintalan tunggal.
John Rose
Apakah kamu yakin Saya tidak mengerti mengapa operasi penulisan harus melibatkan membaca blok data sebelum menuliskannya lagi ... data yang akan ditulis harus ada dalam memori komputer, bukankah begitu?
Massimo
2
@ Massimo: karena OS hanya menulis beberapa byte, tetapi SSD bekerja dalam satuan (halaman) dari 128KB (biasanya). Itu hanya bisa menulis halaman 128KB, tidak kurang, tidak lebih. Jadi, ketika Anda memodifikasi katakanlah tengah halaman, drive membaca seluruh halaman, memperbarui tengah dan kemudian menulis halaman baru biasanya di tempat lain, sambil membatalkan lokasi lama.
Cristian Ciupitu
Cristian Ciupitu benar. Dalam beberapa SSD ini dimitigasi oleh cache onboard (semua drive menggunakan pengontrol Indilinx memiliki 64MB cache, saya percaya) dan mungkin juga oleh cache tulis sistem operasi, jika diaktifkan. Meskipun cache 64MB memiliki keterbatasan, - untuk server database yang melakukan banyak penulisan, 64MB mungkin tidak cukup. Pembuat firmware tidak merilis banyak spesifik, tetapi orang akan menganggap firmware yang lebih baik (Intel, Indilinx) melakukan beberapa pengurutan ulang cerdas / batching untuk menjaga penulisan acak kecil dalam halaman 128KB untuk meminimalkan overhead ini.
John Rose
Dari pemahaman saya tentang cache, ini akan menghemat banyak tulisan kecil yang sangat Anda khawatirkan. Bahkan tidak masalah, karena database dirancang untuk melakukan banyak membaca / menulis linear. Saya yakin SSD akan tetap bekerja lebih baik karena pembacaannya linier, bukan seq. Artinya masih akan ada kesenjangan antara data dan SSD akan menghapus waktu pencarian.
Pirolistik
0

Tidak perlu menunjuk di sini untuk menambahkan ke utas komentar, tetapi jika Anda mengatur ukuran halaman DB / multi read count untuk apa pun di SSD ke beberapa ukuran halaman SSD ini seharusnya tidak menjadi masalah.

Saya belum bekerja di SQL Server dalam waktu yang lama jadi saya tidak yakin apakah opsi ini tersedia di sana. Saya telah melakukan Oracle dan DB2 selama beberapa tahun terakhir dan ini akan menyelesaikan masalah Anda karena DB akan disesuaikan dengan karakteristik disk.

Kevin K.
sumber
0

Saya akan merekomendasikan menyelaraskan partisi tempat file database disimpan.

Saya juga akan merekomendasikan memutuskan apa yang terjadi pada RAID 0 untuk perf (ldf dan TempDB), dan tempatkan data penting pada RAID 1 (mdf).

Ketiga, Anda harus memperbarui firmware drive serta firmware / driver pengontrol SATA. Dengan melakukannya, Anda memberi perusahaan perangkat keras dan pengembangnya peluang untuk mengoptimalkan kinerja bagi Anda.

GregC
sumber
RAID 0 seharusnya tidak pernah digunakan untuk server database. Jika satu drive gagal maka database turun sampai disk diganti dan data yang hilang dipulihkan dari rekaman (ini termasuk log).
mrdenny
Di dunia di mana uang bukan obyek, semuanya harus berjalan pada cache L1 yang didukung baterai. Dalam industri perbankan, file LDF sama pentingnya dengan mdf. Untuk komputasi ilmiah, MDF adalah satu-satunya file yang benar-benar perlu 100%.
GregC