Database
 sql >> Teknologi Basis Data >  >> RDS >> Database

Memindahkan Tabel yang Ada Dari Filegroup Utama ke Filegroup Berbeda

Pada artikel ini, saya akan menjelaskan cara memindahkan tabel dari filegroup Primer ke filegroup Sekunder. Pertama, mari kita pahami apa itu datafile, filegroup, dan jenis filegroups.

File Database dan Filegroups

Ketika SQL Server diinstal di server mana pun, itu membuat file data primer dan file Log untuk menyimpan data. File data primer menyimpan data dan objek database seperti tabel, indeks, prosedur tersimpan, dll. File log menyimpan informasi yang diperlukan untuk memulihkan transaksi. File data dapat disatukan dalam grup file.

SQL Server memiliki tiga jenis file

  1. Berkas utama :Itu dibuat ketika SQL server sedang diinstal, dan berisi metadata database dan informasi. Data pengguna, objek dapat disimpan pada file data Primer. File Utama memiliki ekstensi .mdf.
  2. File Sekunder :File sekunder ditentukan oleh pengguna. Mereka menyimpan data Pengguna, Objek yang dibuat oleh pengguna. Mereka memiliki ekstensi .ndf.
  3. File Log Transaksi s:File T-Logs mencatat semua transaksi yang dilakukan untuk memulihkan database. Ekstensi file Log di .ldf.

Seperti yang saya sebutkan di atas, file data dapat dikelompokkan dalam filegroup. Saat SQL Server sedang diinstal, itu membuat grup file utama yang memiliki file data utama. Grup file sekunder ditentukan oleh pengguna. Mereka memiliki file data sekunder. Saat kita membuat database baru, kita dapat membuat file data sekunder dan grup file. Menambahkan file data sekunder membantu meningkatkan kinerja. Itu dapat dibuat pada drive disk yang berbeda atau partisi disk terpisah yang mengurangi latensi tunggu dan baca-tulis IO.

Direkomendasikan untuk menyimpan tabel dan indeks dalam filegroup terpisah. Selain itu, menyimpan tabel besar dalam file terpisah akan meningkatkan kinerja.

Ada tiga jenis grup file:

  1. Grup File Baris :Grup file baris, juga dikenal sebagai grup file primer, berisi file data primer. Objek SQL, data, tabel sistem dialokasikan ke grup file utama.
  2. Grup File dengan Memori yang Dioptimalkan :Filegroup yang dioptimalkan memori berisi tabel dan data yang dioptimalkan memori. Untuk mengaktifkan OLTP dalam memori, kita perlu membuat filegroup dengan memori yang dioptimalkan.
  3. FileStream :Filegroup aliran file berisi data aliran file seperti Gambar, Dokumen, file yang dapat dieksekusi, dll. Filegroup utama tidak dapat berisi data aliran file, kita perlu membuat grup file FileStream. Ini berisi data FileStream.

Penyiapan Demo

Dalam demo ini, saya membuat "DemoDatabase" pada contoh SQL Server 2017. Tab "Records" dan "PatientData" dibuat di database. Kunci utama “PK_CIDX_Records_ID” dibuat di tabel “Records” dan indeks berkerumun “CIDX_PatientData_ID” dibuat di tabel “PatientData”. Dalam demo ini, saya akan memindahkan tabel “Records” dan “PatientData” dari filegroup utama ke filegroup sekunder.

Untuk ini, kita perlu melakukan hal berikut:

  1. Buat grup file sekunder.
  2. Tambahkan file data ke grup file sekunder.
  3. Pindahkan tabel ke grup file sekunder dengan memindahkan indeks berkerumun dengan batasan kunci utama.
  4. Pindahkan tabel ke grup file sekunder dengan memindahkan indeks berkerumun tanpa kunci utama.

Buat Grup File Sekunder

Filegroup sekunder dapat dibuat menggunakan T-SQL ATAU menggunakan wizard Add file up dari SQL Server Management Studio. Untuk menambahkan grup file menggunakan SSMS, buka SSMS dan pilih database tempat grup file perlu dibuat. Klik kanan database pilih “Properties ”>> pilih “Filegroups ” dan klik “Tambahkan Filegroup ” seperti terlihat pada gambar berikut:

Saat kita mengklik tombol “Tambahkan Filegroup ”, sebuah baris akan ditambahkan di “Baris ” kisi. Dalam “Baris ” kotak, berikan nama grup file yang sesuai di “Nama ” kolom. Filegroup bukan hanya-baca atau default; karenanya, pertahankan Hanya-baca dan Default kotak centang dihapus untuk filegroup baru. Lihat gambar berikut:

Klik OK untuk menutup kotak dialog.

Untuk membuat filegroup menggunakan skrip T-SQL, jalankan skrip berikut.

USE [master]
GO
ALTER DATABASE [DemoDatabase] ADD FILEGROUP [Secondary ]
GO

Menambahkan File ke Filegroup

Untuk menambahkan file dalam filegroup, buka properti database, pilih "file" dan klik "Tambah." Seperti terlihat pada gambar berikut:

Baris kosong akan ditambahkan di File Database tampilan bergaris. Dalam tampilan Grid, berikan nama logis yang sesuai di Logical Name kolom, pilih Data baris dari Jenis File kotak tarik-turun, pilih sekunder dari Filegroup kotak drop-down, atur ukuran awal file di Ukuran Awal kolom, setel pertumbuhan otomatis dan parameter ukuran maksimum di Pertumbuhan Otomatis/Ukuran Maksimum kolom, berikan lokasi fisik file data sekunder di Jalur kolom dan berikan nama file yang sesuai di Nama File kolom. Lihat gambar berikut:

Gunakan skrip T-SQL berikut untuk membuat file data sekunder.

USE [master]
GO
ALTER DATABASE [DemoDatabase] ADD FILE ( NAME = N'DemoDatabase_tblRecords', FILENAME =
N'E:\MS_SQL\SQL2017_Data\DemoDatabase_tblRecords.ndf' , SIZE = 8192KB , FILEGROWTH = 102400KB ) TO FILEGROUP [Secondary]
GO

File data sekunder telah dibuat. Lihat gambar berikut:

Untuk melihat daftar grup file yang dibuat di database, jalankan kueri berikut.

use DemoDatabase
go
select 
a.Name as 'File group Name', type_desc as 'Filegroup Type', case when is_default=1 then 'Yes' else 'No' end as 'Is filegroup default?',
b.filename as 'File Location',
b.name 'Logical Name',
Convert(numeric(10,3),Convert(numeric(10,3),(size/128))/1024) as 'File Size in MB'
 from sys.filegroups a inner join sys.sysfiles b on a.data_space_id=b.groupid

Di bawah ini adalah output dari kueri tersebut.

Mentransfer Tabel yang Ada dari Filegroup Primer ke Filegroup Sekunder

Kita dapat memindahkan tabel yang sudah ada ke grup file lain dengan memindahkan indeks berkerumun ke grup file lain. Seperti yang kita ketahui, simpul daun dari indeks berkerumun memiliki data aktual; maka memindahkan indeks berkerumun dapat memindahkan seluruh tabel ke grup file lain. Memindahkan indeks memiliki batasan:jika indeks adalah kunci utama atau batasan unik, Anda tidak dapat memindahkan indeks menggunakan SQL Server Management Studio. Untuk memindahkan indeks tersebut, kita perlu menggunakan buat indeks pernyataan dan dengan DROP_Existing=ON pilihan.

Memindahkan Indeks Cluster dengan Batasan Kunci Utama.

Kunci utama memberlakukan nilai unik, karenanya membuat indeks berkerumun unik. Kolom kuncinya adalah PRN. Untuk membuatnya di grup file sekunder, setel DROP_EXISTING=ON pilihan dan filegroup harus sekunder. Jalankan script berikut.

USE [DemoDatabas]
GO
Create Unique Clustered index [PK_CIDX_Records_ID] ON [Records] (ID asc)  WITH (DROP_EXISTING=ON) ON [Secondary]

Setelah perintah berhasil dijalankan, verifikasi bahwa indeks telah dibuat di filegroup sekunder. Untuk ini, klik kanan Penyimpanan opsi di Properti Indeks kotak dialog. Untuk membuka properti indeks, perluas DemoDatabase database>> luaskan Tabel>> perluas Indeks . Klik kanan PK_CIDX_Records_ID , seperti yang ditunjukkan pada gambar berikut:

Seperti yang saya sebutkan, setelah indeks berkerumun pindah ke grup file sekunder, tabel akan dipindahkan ke grup file sekunder. Untuk memverifikasinya, klik kanan Penyimpanan opsi di Properti Tabel kotak dialog. Untuk membuka properti indeks, perluas DemoDatabase database>> luaskan Tabel s>> klik kanan Catatan, dan pilih penyimpanan, seperti yang ditunjukkan pada gambar berikut:

Memindahkan Indeks Tergugus Tanpa Kunci Utama

Kita dapat memindahkan indeks berkerumun tanpa kunci utama menggunakan SQL Server Management Studio. Untuk melakukannya, perluas DemoDatabase database>> luaskan Tabel>> perluas Indeks s>> klik kanan CIDX_PatientData_ID indeks dan pilih Properti, seperti yang ditunjukkan pada gambar berikut:

Properti Indeks kotak dialog terbuka. Di kotak dialog, pilih Penyimpanan, dan di jendela Penyimpanan, klik Filegroup kotak tarik-turun, pilih Sekunder filegroup dan klik OK, seperti terlihat pada gambar berikut:

Mengubah filegroup indeks akan membuat ulang seluruh indeks. Setelah indeks dibuat ulang, buka Properti Tabel dan pilih penyimpanan.

Seperti yang Anda lihat pada gambar di atas, bersamaan dengan memindahkan CIDX_PatientData_ID indeks berkerumun ke grup file sekunder, PatientData tabel juga dipindahkan ke Sekunder grup file.

Dengan menjalankan kueri berikut, Anda dapat menemukan daftar objek yang dibuat ke grup file yang berbeda:

   SELECT obj.[name] as [Table Name],
       obj.[type] as [Object Type],
       Indx.[name] as [Index Name],
       fG.[name] as [Filegroup Name]
FROM   sys.indexes INDX
       INNER JOIN sys.filegroups FG
               ON INDX.data_space_id = fG.data_space_id
       INNER JOIN sys.all_objects Obj
               ON INDX.[object_id] = obj.[object_id]
WHERE  INDX.data_space_id = fG.data_space_id
And obj.type='U'       
go

Di bawah ini adalah output dari kueri:

Ringkasan

Di artikel ini sudah saya jelaskan

    1. Dasar-dasar File Data dan grup file.
    2. Cara membuat grup file sekunder dan menambahkan file data sekunder di dalamnya.
    3. Pindahkan tabel ke grup file sekunder dengan memindahkan:
      • Kunci utama.
      • Indeks berkerumun.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana tidak memanggil prosedur tersimpan yang dikompilasi secara asli Hekaton

  2. SQL Kurang Dari atau Sama Dengan (=) Operator untuk Pemula

  3. Kolom Komputasi yang Bertahan dengan Benar

  4. Perutean Hanya-Baca untuk Selalu Aktif

  5. Cara Memperbarui Kolom Berdasarkan Filter Kolom Lain