Saya sedang membangun SQL Server dengan 48 GB RAM, 1 CPU, & 8 SATA III (6GB / s) drive SSD (128 GB Crucial m4) dan kontroler LSI MegaRAID (SAS 9265-8i). Saya berharap beban kerja kebanyakan terbaca. Akan ada beberapa periode kegiatan menulis yang lebih berat (sinkronisasi data per jam dengan penyedia data pihak ketiga - pencadangan malam), tetapi saya menduga rasio baca / tulis tipikal adalah sekitar 90% baca / 10% tulis.
Opsi 1:
Drive Logical C: - RAID 1 (2 drive fisik) -
Drive Logical D: - RAID 10 (6 drive fisik) - File DB / log / tempdb / backup?
ATAU
Opsi 2:
Logical Drive C: - RAID 1 (2 drive fisik) -
Drive logis OS D: - RAID 1 (2 drive fisik) - File Db
Logical Drive E: - RAID 1 (2 drive fisik) - log file / backup?
Logical Drive F: - RAID 1 (2 drive fisik) - tempdb
ATAU
Opsi 3:
Saran lain?
Saya berpikir opsi 1 akan memberi saya kinerja yang lebih baik, karena semua aktivitas DB akan dilucuti di 3 drive (dan dicerminkan di 3 lainnya dalam array), meskipun opsi 2 tampaknya meniru kebijaksanaan konvensional (yang tampaknya lebih banyak diterapkan pada mekanik drive dari SSD). Sepertinya Stack Overflow telah berjalan dengan opsi 1 .
Saya menduga dengan SSD, tidak apa-apa untuk meletakkan segala sesuatu di satu drive logis karena server Anda mungkin lebih banyak CPU daripada I / O dibatasi pada saat itu?
Pertanyaan lain yang saya miliki adalah di mana saya harus meletakkan cadangan malam? Kami tidak ingin cadangan memperlambat sisa SQL server, dan saya kira menulis cadangan lokasi yang sama dengan log adalah praktik yang baik karena perilaku baca / tulis dalam kedua kasus tersebut adalah penulisan berurutan.
sumber
Jawaban:
Kebijakan konvensional tentang RAID tidak berlaku untuk SSD. Mereka tidak benar-benar perlu striping (RAID0). Mereka rentan terhadap kegagalan oleh-desain, tapi RAID-1 biasanya bukan jawaban yang tepat untuk SSD karena dua alasan: a) adalah boros, bagian kapasitas array SSD (dan mereka yang mahal) dan 2) SSD karakteristik kegagalan lead menuju kedua drive di cermin gagal pada interval yang sangat dekat (mis. kegagalan berkorelasi) dan dengan demikian membuat seluruh array tidak berguna. Lihat Differential RAID: Memikirkan Kembali RAID untuk Keandalan SSD untuk diskusi yang lebih panjang. Beberapa merekomendasikan menggunakan Raid-6 untuk SSD.
Selain itu, kebijakan konvensional tata letak file SQL Server tidak berlaku untuk SSD. Saya akan merekomendasikan Anda menonton SQL pada SSD: Hot and Crazy Love dan membaca tautan benchmark dalam jawaban ini .
sumber
Pendekatan standar untuk memisahkan pola IO acak untuk data dari urutan log tidak berlaku pada SSD, jadi saya akan memilih opsi 1 dengan peringatan:
Masalah memisahkan log dari data di mana SSD digunakan adalah masalah RPO (tujuan titik pemulihan) untuk sistem, bukan kinerja. Jika RPO didefinisikan dalam beberapa menit, pergi dengan satu larik bersama dan ambil cadangan log setiap [RPO] menit. Jika RPO didefinisikan dalam hitungan detik, pergi dengan array yang terpisah.
Sejujurnya, jika RPO ketat saya akan menyimpan SSD untuk array data dan menggunakan sepasang pemintal yang dapat diandalkan (perusahaan) untuk log.
sumber
Anda harus pergi dengan opsi 2 sebagai berikut:
Dengan memisahkan data Anda dan indeks Anda dalam 2 file data yang berbeda yang kemudian disimpan dalam 2 drive logis fisik yang berbeda, Anda akan memperoleh peningkatan besar dalam disk io hanya karena ketika Anda query, Anda akan memiliki satu disk berputar untuk data tabel Anda dan lainnya berputar untuk indeks Anda secara bersamaan.
Biarkan tempdb terpisah dari cadangan Anda juga karena banyak hal terjadi di sana juga. Jangan mencampur cadangan Anda dan file data Anda. meskipun backup tidak dilakukan setiap hari, ketika mereka terjadi mereka mengambil hit besar pada IO Anda. berdasarkan bisnis Anda dan penggunaan database Anda, beberapa orang atau BANYAK orang mungkin mengeluh selama waktu cadangan.
Semoga ini membantu
sumber