SQL Server: filegroup hanya untuk tabel sistem?


11

Salah satu standar perusahaan kami adalah memiliki grup file / file terpisah untuk tabel / indeks pengguna. Ini ditetapkan sebagai default sehingga tidak perlu memenuhi syarat pernyataan CREATE TABLE.

Jadi sepertinya ini

  • fileid 1 = tabel sistem, MDF
  • fileid 2 = t-log = LDF
  • fileid 3 = barang pengguna = NDF

Adakah yang bisa membantu saya memahami pembenaran awal mengapa ini diamanatkan?


Saya akan berterus terang dan menyatakan saya pikir itu voodoo. Apakah saya salah ...?

Sunting: Saya sadar bagaimana menggunakan filegroup untuk pemisahan indeks / partisi / arsip, serta cara mengembalikan sedikit demi sedikit. Pertanyaan ini adalah tentang penggunaan grup file terpisah pada volume yang sama hanya untuk tabel sistem.

Jawaban:


9

Buku pelatihan Microsoft 70-432 mengatakan, "Alasan utama untuk tidak menempatkan objek Anda pada grup file primer adalah untuk menyediakan sebanyak mungkin isolasi dalam I / O. Data dalam objek sistem tidak berubah sesering data di objek Anda. Dengan meminimalkan aktivitas penulisan ke file data primer, Anda mengurangi kemungkinan memperkenalkan korupsi karena kegagalan perangkat keras. Selain itu, karena status grup fileg utama juga menentukan keadaan database, Anda dapat meningkatkan ketersediaan dari database saya meminimalkan perubahan yang dilakukan pada filegroup utama. "

Jadi, anggap itu seperti yang Anda mau. Yang lain mengatakan ini tidak perlu dalam keadaan tertentu dan tentu saja lebih untuk mempertahankan. Saya pikir saya akan memberikan alasan Microsoft.


Wajar, beberapa justifikasi tertulis untuk itu. Saya akan menerima ini
gbn

1
Alasan lain adalah bahwa pemulihan database PARTIAL memungkinkan pemulihan filegroup PRIMARY ditambah filegroup terpilih lainnya yang memungkinkan pemulihan lebih cepat dari VLDB yang dirancang dengan benar. Mengizinkan filegroup yang diarsipkan / sekunder untuk dipulihkan nanti.
MartinC

@ MartinC: Saya tahu tentang mengembalikan sebagian dll, tetapi saya tidak pernah mengerti logika memisahkan tabel sistem secara eksplisit. Filegroup untuk kinerja, pengarsipan, pemeliharaan, partisi dll. Tapi tabel sistem? Jared menawarkan penjelasan terbaik sejauh ini ..
gbn

Jika database secara keseluruhan sangat besar, filegroup primer dapat memiliki cadangan yang lebih teratur dari data utama. Pemulihan hanya akan memerlukan cadangan log ekor dan pemulihan filegroup utama dan log transaksi sejak cadangan filegroup plus ekor. Karena tabel sistem kecil, ini akan menjadi proses pemulihan yang lebih cepat vs melakukan ini untuk seluruh database sehingga dapat mengurangi waktu henti jika terjadi masalah.
MartinC

12

Ini bukan keuntungan kinerja untuk ini, ada keuntungan yang bisa diperoleh. Jika file korupsi terjadi di tabel sistem maka database hilang. Jika Anda menyimpan data pengguna dalam grup file yang terpisah (atau grup) maka Anda dapat mengembalikan hanya file-file yang menjaga sisa database online selama pemulihan (dengan asumsi Edisi Enterprise di sini).

Jika ini sebabnya mereka menyatakan ini, saya tidak bisa mengatakannya, tetapi ini akan bermanfaat jika memiliki banyak grup file dengan hanya objek sistem di filegroup PRIMARY.

Namun Anda harus menendang kemudian di sampah karena mengatakan bahwa AutoShrink harus diaktifkan.


Untuk mempelajari lebih lanjut tentang ini, Anda dapat mencari Pengembalian Piecemeal Online di Buku Online.
Brent Ozar

1
Saya selalu berpikir ini adalah voodoo juga mengingat 2 filegroup berada pada volume yang sama (pada SAN). Apakah risiko korupsi begitu tinggi? (DBA operasional yang sebenarnya disetel AutoShrink false)
gbn

Kemungkinannya adalah jika ada korupsi maka akan ada satu halaman dalam satu file karena penyimpanan akan muncul ketika menulis halaman ke disk. Sesuatu seperti 99,9999% dari kerusakan basis data adalah masalah penyimpanan. 1/2 dari sisa masalah adalah memori buruk, sisanya adalah bug SQL. Ketika basis data bertambah besar (multi-TB) ini menjadi lebih penting, karena memulihkan basis data multi-TB akan memakan waktu beberapa hari.
mrdenny

Bukankah saya benar dalam berpikir bahwa jika objek sistem hanya di filegroup utama yang harus Anda butuhkan di masa depan Anda akan dapat melakukan hal berikut. Buat x file tambahan di filegroup lain. Isi file-file ini secara proporsional dengan memigrasikan data Anda dari file data Anda yang ada?
Ally Reilly

4

Tidak yakin saya mengerti, apakah Anda meminta seseorang untuk membenarkan standar perusahaan Anda? Saya akan berpikir bahwa siapa pun yang menulis bahwa dokumen standar untuk perusahaan Anda akan dapat menjelaskan mengapa hal ini dilakukan.

Yang sedang berkata, itu tidak biasa bagi beberapa toko untuk ingin keluar data sistem dari data pengguna. Dan jika digunakan bersama dengan set disk khusus, Anda dapat menuai beberapa keuntungan kinerja.


Terima kasih. Bukan membenarkannya, tapi jelaskan itu. Ini adalah tim DB Engineering yang sama yang mengatakan AutoShrink aktif. Tabel sistem yang diberikan menempati beberapa MB dan akan tetap ada dalam memori, apakah Anda percaya akan adanya peningkatan kinerja?
gbn
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.