Saya memiliki server database yang cukup sibuk menjalankan SQL Server 2008 R2 yang memiliki pengaturan berikut:
- SATA RAID 1 (2 Drive) - OS / Program
- SAS RAID 10 (4 Drive) - File Database Sql (data dan log)
- SAS RAID 1 (2 Drive) - TempDB (data dan log)
Dengan asumsi saya tidak dapat menambahkan drive tambahan ke server ini, sudahkah saya memanfaatkan konfigurasi yang saya miliki? Atau haruskah saya mempertimbangkan skema lain di sini di mana log diisolasi dari file data, misalnya?
Memperbarui:
Bagi mereka yang meminta perincian perangkat keras lebih lanjut:
- Drive SATA (digunakan untuk partisi OS / Program) adalah: WD 7200 RPM 3 Gb / s 3.5 Inch SATA
- Drive SAS yang digunakan dalam array lainnya adalah: Seagate 15K RPM 6 Gb / s 3,5 inci SAS
- Pengontrol RAID yang digunakan adalah: LSI 9260-8i SAS / SATA 6 Gb 8 port
Pembaruan 2:
Berdasarkan umpan balik yang saya terima, sepertinya saya memiliki opsi yang layak untuk dipilih - Saya akan memberikan hadiah kepada seseorang yang dapat memberi tahu saya mana yang mungkin menjadi yang terbaik di lingkungan yang telah saya uraikan:
- Biarkan semuanya apa adanya - saya mungkin tidak akan melakukan yang lebih baik
- Pindahkan 2 SAS RAID 1 drive saya ke dalam array RAID 10 yang ada untuk membuatnya terdiri dari total 6 disk
- Pindahkan file log saya ke SAS RAID 1 dan / atau pindahkan TempDB (data atau log) kembali ke RAID 10
sql-server
hardware
DanP
sumber
sumber
Jawaban:
Varian pertanyaan ini muncul secara semi-teratur:
Ada juga sesekali sanggul roti tentang pemisahan data / log "praktik terbaik".
Tanpa analisis yang lebih terperinci tentang apa yang dilakukan server ini, saran yang sama berlaku seperti yang diberikan sebelumnya.
Jarang ada titik dalam pemisahan dengan begitu sedikit spindle yang tersedia. Array tunggal dengan kapasitas IOP yang lebih besar biasanya akan menyerap gumpalan dan benjolan beban kerja Anda lebih baik dari 2 array yang lebih kecil.
Salah satu varian yang dapat diuji coba adalah menempatkan tempdb pada drive OS. Lakukan saja jika Anda memiliki beban kerja representatif yang dapat Anda putar ulang berulang kali, untuk memastikan perbandingan konfigurasi yang adil. Jika Anda menggunakan pengaturan produksi ini, pastikan pertumbuhan tempdb dibatasi sehingga Anda tidak secara tidak sengaja menggunakan semua ruang kosong pada drive OS.
Mengingat bahwa drive OS Anda adalah coaster 7200RPM, saya akan terkejut jika tempdb pada drive OS mengkonfigurasi manfaat apa pun.
sumber
Itu semua tergantung pada beban kerja Anda, tetapi dengan hanya 6 drive itu membatasi pilihan Anda. Jika beban kerja Anda tidak terlalu bergantung pada tempdb untuk hal-hal seperti pengurutan, tabel hash, dan isolasi snapshot, maka Anda mungkin lebih baik menggunakan 6 SAS drive bersama di RAID 10. Namun, jika Anda tahu atau memiliki metrik untuk membuktikan bahwa tempdb banyak digunakan, maka Anda harus tetap terpisah seperti yang Anda miliki.
sumber
Ini sangat tergantung pada apa yang Anda maksud dengan "sangat sibuk": pola beban kerja yang berbeda (menulis berat atau tidak, operasi massal umum atau tidak, tingkat akses bersamaan, untuk menyebutkan tetapi tiga dari banyak variabel) dapat memiliki efek drastis pada kinerja pengaturan spindle yang diberikan.
Untuk situasi berat penulisan yang memisahkan log dari data dapat membuat perbedaan yang signifikan karena setiap penulisan melibatkan pemutakhiran baik file log dan data, sehingga melibatkan sejumlah besar head flipping tambahan jika kedua set file berada pada set spindle yang sama .
Tanpa referensi lebih lanjut untuk beban kerja Anda (dan spesifikasi drive-drive itu dan pengontrol apa pun yang ada di antara mereka dan mesin) saya akan cenderung untuk pergi untuk tiga volume: satu untuk program OS + dan tempdb (data), satu untuk DB utama data, dan yang ketiga untuk log (baik tempdb dan DB utama).
Tentu saja jika beban kerja Anda semua sangat ringan pada operasi tulis maka Anda tidak perlu menghabiskan terlalu banyak waktu untuk khawatir tentang memisahkan data dan log, karena itu akan membuat sedikit perbedaan kinerja dan mendedikasikan volume keseluruhan untuk mereka akan sangat boros jika tersedia ruang.
sumber
Jawaban sebenarnya tergantung pada kebutuhan Anda, tetapi umumnya "memasukkan data dan masuk ke berbagai array" lebih penting daripada "menempatkan tempdb pada arraynya sendiri".
Mengingat jumlah drive yang Anda miliki, titik awal saya adalah:
Yang harus dilakukan adalah menggunakan SQLIO untuk menguji kinerja berbagai konfigurasi drive.
sumber
Bergantung pada apa Anda menggunakan DB untuk (OLTP vs pergudangan) konfigurasi Anda terlihat seperti konfigurasi umum yang baik. Jika Anda memiliki lebih banyak disk, Anda akan memiliki lebih banyak opsi.
Anda bisa mendapatkan kinerja yang lebih baik jika Anda mengganti disk untuk TempDB Anda ke RAID 0 (stripe). Ini meningkatkan risiko kegagalan, tetapi karena TempDB hanya buffer data, Anda tidak bisa mengalami kehilangan data. Jadi kebanyakan orang menganggap itu sebagai trade-off yang wajar. Simpan cadangan di sekitar (atau cadangan panas).
Satu hal yang tidak Anda sebutkan, tetapi bisa coba (jika belum): Microsoft merekomendasikan untuk membagi TempDB Anda menjadi beberapa file (satu per CPU). Tentu saja, yang terbaik adalah mereka berada di disk yang terpisah, tetapi hanya memiliki file yang terpisah membantu. http://msdn.microsoft.com/en-us/library/ms175527(v=SQL.105).aspx
sumber