Basis data dengan banyak file .mdf

10

Saya telah mencari secara online tetapi tidak menemukan apa yang saya cari.

Masalah / permintaan adalah sepengetahuan saya database di SQL Server harus memiliki Satu file .mdf dan mungkin beberapa file .ndf dan Satu file .log.

Saya telah melihat banyak basis data dengan satu mdf dan beberapa file ndf. Tetapi baru-baru ini saya menemukan beberapa database di server di mana setiap database memiliki banyak file mdf.

Saya mengambil cadangan dari beberapa database memindahkan mereka ke server lain dan mengembalikan file Primer sebagai .mdf dan semua file lainnya sebagai. Dan tentu saja kecuali file log itu dipulihkan sebagai .log.

Sekarang pertanyaan saya adalah:

  1. Apakah ada kebijaksanaan dalam memiliki beberapa file .mdf untuk database?
  2. Apakah ada kekurangan memiliki beberapa file .mdf?

Dulu SQL Server 2008 R2 64bit Enterprise Edition

Setiap saran atau petunjuk ke arah yang benar sangat dihargai. Terima kasih.

M.Ali
sumber

Jawaban:

14

Tetapi baru-baru ini saya menemukan beberapa database di server di mana setiap database memiliki banyak file mdf.

Itu karena konvensi penamaan yang salah. Microsoft mengatakan bahwa setiap database memiliki satu file data primer tetapi itu tidak berarti hanya memiliki satu "file data mdf", database dapat memiliki banyak file data dengan .mdfekstensi tetapi hanya satu yang akan menjadi file data primer. Lebih baik memberikan mdfekstensi ke file data primer dan ndfke file data sekunder untuk memiliki demarkasi yang tepat tetapi ini bukan aturan yang keras dan cepat Anda juga dapat memberikan ekstensi .abc ke file data primer sehingga apa yang Anda saksikan adalah normal. Faktanya, Anda dapat memberikan ekstensi apa pun yang Anda suka.

Apakah ada kebijaksanaan dalam memiliki beberapa file .mdf untuk database?

Jika yang kamu maksud:

Adakah kebijaksanaan untuk memiliki banyak file primer untuk basis data?

Jawabannya adalah tidak, database hanya dapat memiliki satu file data primer.

Tetapi jika Anda maksud:

Apakah ada kebijaksanaan dalam memiliki banyak file data (.mdf, .ndf, atau nama yang berbeda) untuk database?

Itu tergantung, Anda bisa dan tidak bisa mendapatkan keuntungan dengan banyak file data. Jika mereka tersebar di berbagai drive fisik (saya berbicara tentang spindle), Anda akan melihat beberapa keuntungan dengan menulis aplikasi intensif. Jika mereka semua berada di partisi logis yang sama, itu tidak akan memiliki keuntungan karena mendasari mereka akan menggunakan sumber daya bersama. Menggunakan file dan filegroup meningkatkan kinerja database, karena memungkinkan database dibuat di beberapa disk, beberapa pengontrol disk, atau sistem RAID (redundant array of independent disks). Misalnya, jika komputer Anda memiliki empat disk, Anda bisa membuat database yang terdiri dari tiga file data dan satu file log, dengan satu file di setiap disk. Saat data diakses, empat kepala baca / tulis dapat mengakses data secara paralel pada saat yang sama.

Sesuai artikel BOL MSDN ini

Filegroup menggunakan strategi pengisian proporsional di semua file dalam setiap filegroup. Ketika data dituliskan ke filegroup, SQL Server Database Engine menulis jumlah yang proporsional dengan ruang kosong dalam file untuk setiap file dalam filegroup, alih-alih menulis semua data ke file pertama sampai penuh. Kemudian menulis ke file berikutnya. Misalnya, jika file f1 memiliki 100 MB gratis dan file f2 memiliki 200 MB gratis, satu tingkat dialokasikan dari file f1, dua perpanjangan dari file f2, dan seterusnya. Dengan cara ini, kedua file menjadi penuh pada waktu yang hampir bersamaan, dan striping sederhana tercapai.

Keuntungan lain yang saya tahu adalah mempertimbangkan database 1 TB jika Anda memiliki file data tunggal untuk itu dan Anda ingin mengembalikan database ini pada beberapa server lain yang sangat tidak mungkin Anda akan memiliki 1 TB ruang kosong. Sekarang jika database yang sama tersebar pada file yang berbeda masing-masing memiliki ukuran 250 G itu menjadi lebih mudah dalam pemulihan. Ini mungkin sebenarnya bukan skenario Anda, tetapi sedikit banyak membantu untuk menemukan server dengan empat drive 250 G dari satu drive 1 TB.

Saya akan mengatakan bukannya banyak file data yang lebih baik untuk memiliki grup file yang berbeda tetapi sekali lagi tidak ada banyak lingkungan. Basis data yang terdiri dari beberapa grup file dapat dipulihkan secara bertahap dengan proses yang dikenal sebagai pemulihan sedikit demi sedikit. Piecemeal restore berfungsi dengan semua model pemulihan, tetapi lebih fleksibel untuk model penuh dan sebagian besar dicatat daripada mode sederhana. File atau filegroup dalam database dapat dicadangkan dan dipulihkan secara individual. Ini memungkinkan Anda untuk hanya mengembalikan file yang rusak tanpa harus mengembalikan sisa database. File dalam cadangan filegroup dapat dipulihkan secara individual atau sebagai grup

Shanky
sumber
Jika DB memiliki lebih dari satu file data file yaitu ndf dan primer yaitu masih default. Dengan ini jika salah satu file DB digunakan untuk membuat tabel / indeks di atasnya, apakah itu membuat kinerja lebih dari kepala? Maksud saya grup file default masih primer tetapi dibuat tabel dan indeks pada file data.
Hi10