Di SQL Server, kapan Anda harus membagi FileGroup Data Utama Anda menjadi file data sekunder?

11

Database kami saat ini hanya memiliki satu FileGroup, PRIMARY, yang berisi sekitar 8GB data (baris tabel, indeks, katalog teks lengkap).

Kapan waktu yang tepat untuk membagi ini menjadi file data sekunder? Apa saja kriteria yang harus saya waspadai?

Jarrod Dixon
sumber

Jawaban:

20

Ada dua bagian untuk pertanyaan ini: kapan menambahkan FILEGROUP baru, dan kapan menambahkan FILE baru di filegroup. Pertama mari kita bicara teori:

Mark benar tentang alasan utama kinerja.

Alasan kedua adalah pemulihan bencana. Dengan SQL Server 2005 dan yang lebih baru, Anda dapat melakukan pemulihan filegroup. Ketika bencana terjadi, Anda dapat memulihkan filegroup utama Anda terlebih dahulu dan membawa database secara online untuk permintaan. Pengguna dapat menjalankan kueri saat Anda memulihkan filegroup lainnya. Ini berguna untuk basis data dengan sejumlah besar data historis yang mungkin tidak diperlukan segera, atau gudang data yang perlu memuat data ke dalam tabel saat ini tanpa memerlukan data historis untuk akses.

Alasan lain adalah profil baca / tulis dari kelompok data. Jika Anda memiliki beberapa data yang terus-menerus ditulis, dan data lain yang mendapat aktivitas baca berat, Anda dapat membangun berbagai jenis penyimpanan untuk mengakomodasi kebutuhan tersebut. Anda bisa meletakkan barang-barang berat di raid 10, dan meninggalkan hal-hal yang bias baca di raid yang lebih murah 5.

Sekarang, mari kita bicara file versus filegroup. Ketika Anda menempatkan objek di SQL Server, Anda harus menempatkannya di tingkat grup berkas. Anda bisa mendaratkan tabel atau indeks di filegroup, tetapi Anda tidak bisa memilih file tertentu. Jadi semua yang telah kita diskusikan sejauh ini tentang kapan menambahkan filegroup - tetapi kapan Anda menambahkan file?

Jika Anda mendesain penyimpanan, dan Anda memiliki 80 hard drive, ada beberapa cara untuk memecahnya:

  • Satu kumpulan 80 drive
  • Dua kolam 40 drive
  • Empat kumpulan 20 drive, dll ...

Subsistem penyimpanan yang berbeda memiliki profil kinerja yang berbeda. Saya telah bekerja dengan beberapa SAN yang berkinerja terbaik dengan array 12-16 drive, dan apa pun yang lebih besar dari itu tidak memiliki peningkatan kinerja. Contoh lain adalah SAN dengan multipathing: jika Anda memiliki beberapa HBA yang menghubungkan server Anda ke penyimpanan Anda, dan jika perangkat lunak multipathing Anda tidak benar-benar aktif / aktif, maka Anda mungkin perlu satu larik per jalur untuk mendistribusikan beban. Empat jalur, empat kumpulan drive akan mendapatkan kinerja yang lebih baik pada tipe drive tersebut.

Dalam kasus tersebut, Anda berakhir dengan empat array berbeda, empat drive berbeda di bawah Windows (kecuali jika Anda menggunakan titik mount, dan bahkan kemudian itu folder yang berbeda) dan Anda akan memerlukan empat file terpisah di SQL Server. File-file yang terpisah dapat berada di filegroup yang sama.

Brent Ozar
sumber
1
Yup ... analisis manfaat langsung. Satu-satunya hal yang akan saya tambahkan adalah bahwa Anda juga dapat sering memuat indeks dari tabel yang banyak diakses ke spindle / filegroup mereka sendiri untuk meningkatkan kinerja async / read-ahead. Saya telah melakukan itu dalam beberapa kasus dengan beberapa penyebaran yang lebih besar dan membantu perusahaan menghemat puluhan ribu $$ dalam biaya perangkat keras yang disumpah oleh vendor SAN mereka, mereka perlu mendapatkan throughput yang mereka inginkan.
Michael K Campbell
6

Alasan utamanya adalah kinerja. Ketika Anda kehabisan kapasitas IOPS pada drive disk filegroup utama Anda, Anda harus memperluas ke filegroup kedua untuk membagi IOPS menjadi beberapa disk / LUN tergantung pada konfigurasi penyimpanan.

EDIT: Brad Wilson membuat komentar yang bagus tentang SSD. Jika Anda menggunakan sistem penyimpanan SSD / SATA / FC komposit, Anda mungkin ingin memiliki grup file yang berbeda pada berbagai jenis penyimpanan. Anda kemudian dapat menempatkan tabel persyaratan IOPS ekstrem Anda ke SSD filegropus, sementara tabel histori / statistik dapat disimpan pada filegroup SATA murah.

Mark S. Rasmussen
sumber
2
SSD memiliki kesempatan untuk membuat perubahan besar dalam cara kami berpikir tentang pemisahan data, mengingat betapa sulitnya menjenuhkannya karena latensi yang sangat rendah.
Brad Wilson
Memang, poin bagus!
Mark S. Rasmussen
1

Saya juga akan menunjukkan ada aspek ketersediaan data recoverabiltiy / untuk pertanyaan ini juga. Dengan menggunakan beberapa grup file, dan tidak menempatkan objek yang ditentukan pengguna pada grup file utama, Anda memiliki lebih banyak fleksibilitas dalam mengaktifkan pemulihan online. ini memungkinkan pemulihan sedikit demi sedikit di tingkat grup file.

Pengembalian online tersedia dalam edisi Enterprise dan Developer sql server lebih dari 2005

Pikiran lain yang muncul dalam pikiran adalah untuk memisahkan hanya membaca data referensi statis dari data transaksional. Untuk basis data yang lebih besar, ini dapat mengurangi jumlah waktu dan / atau ruang yang dibutuhkan untuk melakukan pencadangan.

Jason Horner
sumber