Buat tabel dan indeks yang dipartisi
Berlaku untuk: SQL Server
Azure SQL Database
Azure SQL Managed Instance
Anda dapat membuat tabel atau indeks yang dipartisi di SQL Server, Azure SQL Database, dan Azure SQL Managed Instance dengan menggunakan SQL Server Management Studio atau Transact-SQL. Data dalam tabel dan indeks yang dipartisi dibagi secara horizontal menjadi satuan yang dapat tersebar di lebih dari satu grup file dalam database, atau disimpan dalam satu grup file. Pemartisian dapat membuat tabel dan indeks besar lebih mudah dikelola dan dapat diskalakan.
Membuat tabel atau indeks yang dipartisi biasanya terjadi dalam tiga atau empat bagian:
Secara opsional buat grup file atau grup file dan file data terkait yang akan menyimpan partisi yang ditentukan oleh skema partisi. Alasan utama untuk menempatkan partisi pada beberapa grup file adalah untuk memastikan Anda dapat melakukan operasi pencadangan dan pemulihan secara independen pada grup file. Jika ini tidak diperlukan, Anda dapat memilih untuk menetapkan semua partisi ke satu grup file, menggunakan grup file yang ada, seperti
PRIMARY
, atau grup file baru dengan file data terkait. Dalam hampir semua skenario, Anda akan mencapai semua manfaat pemartisian apakah Anda menggunakan beberapa grup file atau tidak.Buat fungsi partisi yang memetakan baris tabel atau indeks ke dalam partisi berdasarkan nilai kolom tertentu. Anda dapat menggunakan fungsi partisi tunggal untuk mempartisi beberapa objek.
Buat skema partisi yang memetakan partisi tabel atau indeks yang dipartisi ke satu grup file atau ke beberapa grup file. Anda dapat menggunakan skema partisi tunggal untuk mempartisi beberapa objek.
Buat atau ubah tabel atau indeks dan tentukan skema partisi sebagai lokasi penyimpanan, bersama dengan kolom yang akan berfungsi sebagai kolom pemartisian.
Catatan
Partisi didukung penuh di Azure SQL Database. Karena hanya PRIMARY
grup file yang didukung di Azure SQL Database, semua partisi harus ditempatkan pada PRIMARY
grup file.
Pemartisian tabel juga tersedia di kumpulan SQL khusus di Azure Synapse Analytics, dengan beberapa perbedaan sintaksis. Pelajari selengkapnya di Tabel partisi di kumpulan SQL khusus.
Izin
Membuat tabel yang dipartisi memerlukan izin CREATE TABLE dalam database dan izin UBAH pada skema tempat tabel sedang dibuat. Membuat indeks yang dipartisi memerlukan izin UBAH pada tabel atau tampilan tempat indeks sedang dibuat. Membuat tabel atau indeks yang dipartisi memerlukan salah satu izin tambahan berikut:
Izin ALTER ANY DATASPACE. Izin ini default untuk anggota peran server tetap sysadmin dan peran database tetap db_owner dan db_ddladmin .
Izin CONTROL atau ALTER pada database tempat fungsi partisi dan skema partisi sedang dibuat.
IZIN CONTROL SERVER atau ALTER ANY DATABASE di server database tempat fungsi partisi dan skema partisi sedang dibuat.
Membuat tabel yang dipartisi pada satu grup file menggunakan Transact-SQL
Jika Anda tidak perlu melakukan operasi pencadangan dan pemulihan secara independen pada grup file, mempartisi tabel menggunakan grup file tunggal menyederhanakan manajemen tabel yang dipartisi dari waktu ke waktu.
Contoh ini cocok untuk Azure SQL Database, yang tidak mendukung penambahan file dan grup file. Pemartisian tabel didukung di Azure SQL Database dengan membuat partisi di PRIMARY
grup file. Untuk SQL Server dan Azure SQL Managed Instance, Anda mungkin ingin menentukan grup file yang dibuat pengguna, tergantung pada grup file dan praktik manajemen file Anda.
Contoh langkah-langkah dalam membuat tabel yang dipartisi di SQL Server Management Studio (SSMS) menggunakan Transact-SQL dan menetapkan semua partisi ke PRIMARY
grup file. Contohnya:
- Membuat fungsi
myRangePF1
partisi RANGE RIGHT bernama dengan tiga nilai batas menggunakan jenis data datetime2. Tiga nilai batas akan menghasilkan tabel yang dipartisi dengan empat partisi. - Membuat skema partisi bernama
myRangePS1
yang menggunakanALL TO
sintaks untuk menetapkan semua partisi dalammyRangePF1
fungsi partisi kePRIMARY
grup file. - Membuat tabel bernama
PartitionTable
padamyRangePS1
skema partisi, menentukan kolom bernamacol1
sebagai kolom partisi.
Di Object Explorer, sambungkan ke instans Mesin Database.
Pada bilah Standar, pilih Kueri Baru.
Salin dan tempel contoh berikut ke dalam jendela kueri dan pilih Jalankan. Contoh ini membuat fungsi partisi dan skema partisi. Tabel baru dibuat dengan skema partisi yang ditentukan sebagai lokasi penyimpanan.
CREATE PARTITION FUNCTION myRangePF1 (datetime2(0))
AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ;
GO
CREATE PARTITION SCHEME myRangePS1
AS PARTITION myRangePF1
ALL TO ('PRIMARY') ;
GO
CREATE TABLE dbo.PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10))
ON myRangePS1 (col1) ;
GO
Membuat tabel yang dipartisi pada beberapa grup file dengan Transact-SQL
Ikuti langkah-langkah di bagian ini untuk membuat satu atau beberapa grup file, file terkait, dan tabel yang dipartisi menggunakan Transact-SQL di SSMS.
Baik SQL Server maupun Azure SQL Managed Instance mendukung pembuatan grup file dan file. Azure SQL Managed Instance secara otomatis mengonfigurasi jalur untuk semua file database yang ditambahkan, sehingga ALTER DATABASE ADD FILE
perintah di Azure SQL Managed Instance tidak mengizinkan FILENAME
parameter . Azure SQL Database hanya mendukung pembuatan tabel yang dipartisi di PRIMARY
grup file. Temukan contoh kode untuk Azure SQL Database di Membuat tabel yang dipartisi pada satu grup file menggunakan Transact-SQL.
Jalankan contoh berikut terhadap database kosong. Contohnya:
- Menambahkan empat grup file baru ke database.
- Menambahkan satu file ke setiap grup file.
- Membuat fungsi partisi RANGE RIGHT yang disebut
myRangePF1
dengan tiga nilai batas yang akan mempartisi tabel menjadi empat partisi. - Membuat skema partisi yang disebut
myRangePS1
yang berlakumyRangePF1
untuk empat grup file baru. - Membuat tabel yang dipartisi yang disebut
PartitionTable
yang menggunakanmyRangePS1
untuk mempartisicol1
.
Di Object Explorer, sambungkan ke instans Mesin Database.
Pada toolbar Standar, pilih Kueri Baru.
Contoh ini membuat database baru dan menggunakannya. Kemudian membuat grup file baru, fungsi partisi, dan skema partisi. Tabel baru dibuat dengan skema partisi yang ditentukan sebagai lokasi penyimpanan. Salin dan tempel contoh berikut ke dalam jendela kueri.
Jika Anda menggunakan instans terkelola, hapus
FILENAME
parameter dan nilai terkait dariALTER DATABASE ADD FILE
perintah . Instans terkelola akan menentukan jalur file untuk Anda secara otomatis.Jika Anda menggunakan instans SQL Server, sesuaikan nilai untuk
FILENAME
parameter ke lokasi yang sesuai untuk instans Anda.Jika Anda ingin menggunakan database yang sudah ada, hapus
CREATE DATABASE
perintah dan ubahUSE
pernyataan ke nama database yang sesuai.PILIH Jalankan.
CREATE DATABASE PartitionTest; GO USE PartitionTest; GO ALTER DATABASE PartitionTest ADD FILEGROUP test1fg; GO ALTER DATABASE PartitionTest ADD FILEGROUP test2fg; GO ALTER DATABASE PartitionTest ADD FILEGROUP test3fg; GO ALTER DATABASE PartitionTest ADD FILEGROUP test4fg; ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest1, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest1.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test1fg; ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest2, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest2.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test2fg; GO ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest3, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest3.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test3fg; GO ALTER DATABASE PartitionTest ADD FILE ( NAME = partitiontest4, FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\partitiontest4.ndf', SIZE = 5MB, FILEGROWTH = 5MB ) TO FILEGROUP test4fg; GO CREATE PARTITION FUNCTION myRangePF1 (datetime2(0)) AS RANGE RIGHT FOR VALUES ('2022-04-01', '2022-05-01', '2022-06-01') ; GO CREATE PARTITION SCHEME myRangePS1 AS PARTITION myRangePF1 TO (test1fg, test2fg, test3fg, test4fg) ; GO CREATE TABLE PartitionTable (col1 datetime2(0) PRIMARY KEY, col2 char(10)) ON myRangePS1 (col1) ; GO
Mempartisi tabel dengan SSMS
Ikuti langkah-langkah di bagian ini untuk membuat grup file dan file terkait secara opsional, lalu buat tabel yang dipartisi atau partisi tabel yang sudah ada menggunakan Wizard Buat Partisi di SQL Server Management Studio (SSMS). Wizard Buat Partisi tersedia di SQL Server untuk SQL Server dan Azure SQL Managed Instance. Untuk Azure SQL Database, lihat Membuat tabel yang dipartisi pada satu grup file menggunakan Transact-SQL.
Membuat grup file baru (opsional)
Jika Anda ingin menempatkan tabel yang dipartisi pada satu atau beberapa grup file baru, ikuti langkah-langkah di bagian ini. Baik SQL Server maupun Azure SQL Managed Instance mendukung pembuatan grup file dan file. Untuk Azure SQL Managed Instance, jalur untuk file apa pun yang dibuat akan secara otomatis dikonfigurasi untuk Anda.
Di Object Explorer, klik kanan database tempat Anda ingin membuat tabel yang dipartisi dan pilih Properti.
Dalam kotak dialog Properti Database - database_name, di bawah Pilih halaman, pilih Grup file.
Di bawah Baris, pilih Tambahkan. Di baris baru, masukkan nama grup file.
Peringatan
Saat menentukan beberapa grup file, Anda harus selalu memiliki satu grup file tambahan selain jumlah grup file yang ditentukan untuk nilai batas saat Anda membuat partisi.
Lanjutkan menambahkan baris hingga Anda membuat semua grup file untuk tabel atau tabel yang dipartisi.
Pilih OK.
Di bawah Pilih halaman, pilih File.
Di bawah Baris, pilih Tambahkan. Di baris baru, masukkan nama file dan pilih grup file.
Lanjutkan menambahkan baris hingga Anda telah membuat setidaknya satu file untuk setiap grup file.
Membuat tabel yang dipartisi
Secara opsional, perluas folder Tabel dan buat tabel seperti biasa. Untuk informasi selengkapnya, lihat Membuat Tabel (Mesin Database). Atau, Anda dapat menentukan tabel yang sudah ada di langkah berikutnya.
Klik kanan tabel yang ingin Anda partisi, arahkan ke Penyimpanan, lalu pilih Buat Partisi....
Di Wizard Buat Partisi, pada halaman Selamat Datang di Wizard Buat Partisi, pilih Berikutnya.
Pada halaman Pilih Kolom Pemartisian, di kisi kolom pemartisian yang tersedia, pilih kolom tempat Anda ingin mempartisi tabel Anda. Hanya kolom dengan jenis data yang dapat digunakan untuk mempartisi data yang akan ditampilkan di kisi kolom partisi yang tersedia. Jika Anda memilih kolom komputasi sebagai kolom partisi, kolom harus dibuat sebagai kolom yang dipertahankan.
Pilihan yang Anda miliki untuk kolom partisi dan rentang nilai ditentukan terutama sejauh mana data Anda dapat dikelompokkan dengan cara logis. Misalnya, Anda dapat memilih untuk membagi data Anda menjadi pengelompokan logis berdasarkan bulan atau kuartal setahun. Kueri yang Anda rencanakan untuk dibuat terhadap data Anda akan menentukan apakah pengelompokan logis ini memadai untuk mengelola partisi tabel Anda. Semua jenis data valid untuk digunakan sebagai kolom partisi, kecuali teks, ntext, gambar, xml, tanda waktu, varchar(max), nvarchar(max), varbinary(max), jenis data alias, atau jenis data yang ditentukan pengguna CLR.
Opsi tambahan berikut ini tersedia di halaman ini:
Kolokasikan tabel ini ke tabel yang dipartisi terpilih
Memungkinkan Anda memilih tabel yang dipartisi yang berisi data terkait untuk digabungkan dengan tabel ini pada kolom partisi. Tabel dengan partisi yang digabungkan pada kolom partisi biasanya dikueri lebih efisien.Indeks non-unik yang selaras dengan penyimpanan dan indeks unik dengan kolom partisi terindeks
Meratakan semua indeks tabel yang dipartisi dengan skema partisi yang sama. Saat tabel dan indeksnya diratakan, Anda dapat memindahkan partisi masuk dan keluar dari tabel yang dipartisi secara lebih efektif, karena data Anda dipartisi dengan cara yang sama.Setelah memilih kolom partisi dan opsi lainnya, pilih Berikutnya.
Pada halaman Pilih Fungsi Partisi, di bawah Pilih fungsi partisi, pilih Fungsi partisi baru atau Fungsi partisi yang sudah ada. Jika Anda memilih Fungsi partisi baru, masukkan nama fungsi. Jika Anda memilih Fungsi partisi yang ada, pilih nama fungsi yang ingin Anda gunakan dari daftar. Opsi Fungsi partisi yang ada tidak akan tersedia jika tidak ada fungsi partisi lain pada database.
Setelah menyelesaikan halaman ini, pilih Berikutnya.
Pada halaman Pilih Skema Partisi, di bawah Pilih skema partisi, pilih Skema partisi baru atau Skema partisi yang sudah ada. Jika Anda memilih Skema partisi baru, masukkan nama skema. Jika Anda memilih Skema partisi yang ada, pilih nama skema yang ingin Anda gunakan dari daftar. Opsi skema partisi yang ada tidak akan tersedia jika tidak ada skema partisi lain pada database.
Setelah menyelesaikan halaman ini, pilih Berikutnya.
Pada halaman Partisi Peta, di bawah Rentang, pilih Batas kiri atau Batas kanan. Batas kiri menentukan bahwa nilai batas tertinggi akan disertakan dalam partisi. Batas kanan menentukan bahwa nilai batas terendah akan disertakan dalam setiap partisi. Pelajari selengkapnya tentang rentang kanan dan kiri dalam fungsi Partisi.
Saat menentukan beberapa titik batas, Anda harus selalu memasukkan satu baris tambahan selain baris yang menetapkan nilai batas ke grup file.
Di pilih grup file dan tentukan kisi nilai batas, di bawah Grup file, pilih grup file tempat Anda ingin mempartisi data Anda. Di bawah Batas, masukkan nilai batas untuk setiap grup file. Jika Anda ingin menetapkan beberapa atau semua partisi ke grup file yang sama, pilih nama grup file yang sama untuk setiap baris. Jika Anda memilih grup file pada satu baris dan nilai batas dibiarkan kosong, fungsi partisi memetakan seluruh tabel atau indeks ke dalam satu partisi menggunakan nama fungsi partisi.
Opsi tambahan berikut ini tersedia di halaman ini:
Atur Batas...
Membuka kotak dialog Atur Nilai Batas untuk memilih nilai batas dan rentang tanggal yang Anda inginkan untuk partisi Anda. Opsi ini hanya tersedia ketika Anda telah memilih kolom partisi yang berisi salah satu jenis data berikut: tanggal, tanggalwaktu, smalldatetime, datetime2, atau datetimeoffset.Memperkirakan penyimpanan
Memperkirakan rowcount, ruang yang diperlukan, dan ruang yang tersedia untuk penyimpanan untuk setiap grup file yang ditentukan untuk partisi. Nilai-nilai ini ditampilkan dalam kisi sebagai nilai baca-saja.Kotak dialog Atur Nilai Batas memungkinkan opsi tambahan berikut ini:
Tanggal mulai
Memilih tanggal mulai untuk nilai rentang partisi Anda.Tanggal selesai
Memilih tanggal akhir untuk nilai rentang partisi Anda. Jika Anda memilih Batas kiri pada halaman Partisi Peta, tanggal ini akan menjadi nilai terakhir untuk setiap grup file/partisi. Jika Anda memilih Batas kanan pada halaman Partisi Peta, tanggal ini akan menjadi nilai pertama dalam grup file berikutnya ke terakhir.Rentang tanggal
Memilih granularitas tanggal atau kenaikan nilai rentang yang Anda inginkan untuk setiap partisi.Setelah menyelesaikan halaman ini, pilih Berikutnya.
Di halaman Pilih Opsi Output, tentukan bagaimana Anda ingin menyelesaikan tabel yang dipartisi. Pilih Buat Skrip untuk membuat skrip SQL berdasarkan halaman sebelumnya dalam wizard. Pilih Jalankan segera untuk membuat tabel baru yang dipartisi setelah menyelesaikan semua halaman yang tersisa dalam wizard. Pilih Jadwalkan untuk membuat tabel baru yang dipartisi pada waktu yang telah ditentukan di masa mendatang.
Jika Anda memilih Buat skrip, opsi berikut ini tersedia di bawah opsi Skrip:
Skrip ke file
Menghasilkan skrip sebagai file .sql. Masukkan nama file dan lokasi dalam kotak Nama file atau pilih Telusuri untuk membuka kotak dialog Lokasi File Skrip. Dari Simpan Sebagai, pilih Teks unicode atau teks ANSI.Skrip ke Clipboard
Menyimpan skrip ke Clipboard.Skrip ke Jendela Kueri Baru
Menghasilkan skrip ke jendela Editor Kueri baru. Ini adalah pilihan default.Jika Anda memilih Jadwalkan, pilih Ubah jadwal.
Dalam kotak dialog Jadwal Pekerjaan Baru, dalam kotak Nama , masukkan nama jadwal pekerjaan.
Pada daftar Jenis jadwal, pilih jenis jadwal:
Mulai secara otomatis ketika SQL Server Agent dimulai
Mulai setiap kali CPU diam
Berulang. Pilih opsi ini jika tabel baru Anda yang dipartisi diperbarui dengan informasi baru secara teratur.
Satu kali. Ini adalah pilihan default.
Pilih atau kosongkan kotak centang Diaktifkan untuk mengaktifkan atau menonaktifkan jadwal.
Jika Anda memilih Berulang:
Di bawah Frekuensi, pada daftar Terjadi, tentukan frekuensi kemunculan:
Jika Anda memilih Harian, dalam kotak Berulang setiap , masukkan seberapa sering jadwal pekerjaan diulang dalam hari.
Jika Anda memilih Mingguan, dalam kotak Berulang setiap , masukkan seberapa sering jadwal pekerjaan diulang dalam minggu. Pilih hari atau hari dalam seminggu tempat jadwal pekerjaan dijalankan.
Jika Anda memilih Bulanan, pilih Hari atau .
Jika Anda memilih Hari, masukkan tanggal bulan yang Anda inginkan agar jadwal pekerjaan berjalan dan seberapa sering jadwal pekerjaan berulang dalam bulan. Misalnya, jika Anda ingin jadwal pekerjaan berjalan pada hari ke-15 dalam sebulan setiap bulan lainnya, pilih Hari dan masukkan "15" di kotak pertama dan "2" di kotak kedua. Angka terbesar yang diizinkan dalam kotak kedua adalah "99".
Jika Anda memilih The, pilih hari tertentu dalam seminggu dalam bulan yang Anda inginkan agar jadwal pekerjaan berjalan dan seberapa sering jadwal pekerjaan berulang dalam bulan. Misalnya, jika Anda ingin jadwal pekerjaan berjalan pada hari kerja terakhir setiap bulan, pilih Hari, pilih terakhir dari daftar pertama dan hari kerja dari daftar kedua, lalu masukkan "2" di kotak terakhir. Anda juga dapat memilih pertama, kedua, ketiga, atau keempat, serta hari kerja tertentu (misalnya: Minggu atau Rabu) dari dua daftar pertama. Angka terbesar yang diizinkan dalam kotak terakhir adalah "99".
Di bawah Frekuensi harian, tentukan seberapa sering jadwal pekerjaan berulang pada hari jadwal pekerjaan berjalan:
Jika Anda memilih Terjadi sekali pada, masukkan waktu tertentu dalam sehari saat jadwal pekerjaan harus berjalan di kotak Terjadi sekaligus . Masukkan jam, menit, dan detik dalam sehari, serta AM atau PM.
Jika Anda memilih Terjadi setiap, tentukan seberapa sering jadwal pekerjaan berjalan selama hari yang dipilih di bawah Frekuensi. Misalnya, jika Anda ingin jadwal pekerjaan diulang setiap 2 jam pada hari jadwal pekerjaan dijalankan, pilih Terjadi setiap, masukkan "2" di kotak pertama, lalu pilih jam dari daftar. Dari daftar ini Anda juga dapat memilih menit dan detik. Angka terbesar yang diizinkan dalam kotak pertama adalah "100".
Dalam kotak Mulai dari , masukkan waktu jadwal pekerjaan harus mulai berjalan. Di kotak Berakhir, masukkan waktu jadwal pekerjaan harus berhenti diulang. Masukkan jam, menit, dan detik dalam sehari, serta AM atau PM.
Di bawah Durasi, di Tanggal mulai, masukkan tanggal yang Anda inginkan agar jadwal pekerjaan mulai berjalan. Pilih Tanggal selesai atau Tidak ada tanggal selesai untuk menunjukkan kapan jadwal pekerjaan harus berhenti berjalan. Jika Anda memilih Tanggal selesai, masukkan tanggal yang anda inginkan untuk jadwal pekerjaan untuk berhenti berjalan.
Jika Anda memilih Satu Kali, di bawah Kemunculan satu kali, dalam kotak Tanggal , masukkan tanggal jadwal pekerjaan akan dijalankan. Dalam kotak Waktu , masukkan waktu jadwal pekerjaan akan dijalankan. Masukkan jam, menit, dan detik dalam sehari, serta AM atau PM.
Di bawah Ringkasan, di Deskripsi, verifikasi bahwa semua pengaturan jadwal pekerjaan sudah benar.
Pilih OK.
Setelah menyelesaikan halaman ini, pilih Berikutnya.
Pada halaman Tinjau Ringkasan , di bawah Tinjau pilihan Anda, perluas semua opsi yang tersedia untuk memverifikasi bahwa semua pengaturan partisi sudah benar. Jika semuanya seperti yang diharapkan, pilih Selesai.
Pada halaman Buat Kemajuan Wizard Partisi, pantau informasi status tentang tindakan Wizard Buat Partisi. Bergantung pada opsi yang Anda pilih di wizard, halaman kemajuan mungkin berisi satu atau beberapa tindakan. Kotak atas menampilkan status keseluruhan wizard dan jumlah status, kesalahan, dan pesan peringatan yang telah diterima wizard.
Opsi berikut ini tersedia di halaman Buat Kemajuan Wizard Partisi:
Rincian
Menyediakan tindakan, status, dan pesan apa pun yang dikembalikan dari tindakan yang diambil oleh wizard.Perbuatan
Menentukan jenis dan nama setiap tindakan.Keadaan
Menunjukkan apakah tindakan wizard secara keseluruhan mengembalikan nilai Keberhasilan atau Kegagalan.Pesan
Memberikan pesan kesalahan atau peringatan apa pun yang dikembalikan dari proses.Lapor
Membuat laporan yang berisi hasil Wizard Buat Partisi. Opsinya adalah Tampilkan Laporan, Simpan Laporan ke File, Salin Laporan ke Clipboard, dan Kirim Laporan sebagai Email.Tampilkan Laporan
Membuka kotak dialog Tampilkan Laporan , yang berisi laporan teks kemajuan Wizard Buat Partisi.Simpan Laporan ke File
Membuka kotak dialog Simpan Laporan Sebagai .Salin Laporan ke Clipboard
Menyalin hasil laporan kemajuan wizard ke Clipboard.Kirim Laporan sebagai Email
Menyalin hasil laporan kemajuan wizard ke dalam pesan email.Setelah selesai, pilih Tutup.
Wizard Buat Partisi membuat fungsi dan skema partisi lalu menerapkan partisi ke tabel yang ditentukan. Untuk memverifikasi partisi tabel, di Object Explorer, klik kanan tabel dan pilih Properti. Pilih halaman Penyimpanan . Halaman menampilkan informasi seperti nama fungsi dan skema partisi dan jumlah partisi.
Metadata kueri tabel dan indeks yang dipartisi
Anda dapat mengkueri metadata untuk menentukan apakah tabel dipartisi, titik batas untuk tabel yang dipartisi, kolom partisi untuk tabel yang dipartisi, jumlah baris di setiap partisi, dan jika pemadatan data telah diimplementasikan pada partisi.
Menentukan apakah tabel dipartisi
Kueri berikut mengembalikan satu atau beberapa baris jika tabel PartitionTable
dipartisi, atau jika ada indeks non-kluster pada tabel yang dipartisi. Jika tabel tidak dipartisi dan tidak ada indeks non-kluster pada tabel yang dipartisi, tidak ada baris yang dikembalikan.
SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, *
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.[object_id] = i.[object_id]
JOIN sys.partition_schemes ps
ON i.data_space_id = ps.data_space_id
WHERE t.name = 'PartitionTable';
GO
Menentukan nilai batas untuk tabel yang dipartisi
Kueri berikut mengembalikan nilai batas untuk setiap partisi dalam PartitionTable
tabel.
Kueri menggunakan type
kolom dalam sys.indexes untuk mengembalikan hanya informasi untuk indeks tabel berkluster, atau untuk tabel dasar jika tabel adalah timbunan. Untuk menyertakan indeks nonclustered yang dipartisi dalam hasil kueri, hapus atau komentari AND i.type <= 1
dari kueri.
SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
p.partition_number, p.partition_id, i.data_space_id, f.function_id, f.type_desc,
r.boundary_id, r.value AS BoundaryValue
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.object_id = i.object_id
JOIN sys.partitions AS p
ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.partition_schemes AS s
ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
ON f.function_id = r.function_id and r.boundary_id = p.partition_number
WHERE
t.name = 'PartitionTable'
AND i.type <= 1
ORDER BY SchemaName, t.name, i.name, p.partition_number;
Menentukan kolom partisi untuk tabel yang dipartisi
Kueri berikut mengembalikan nama kolom partisi untuk tabel PartitionTable
.
Kueri menggunakan type
kolom dalam sys.indexes untuk mengembalikan hanya informasi untuk indeks tabel berkluster, atau untuk tabel dasar jika tabel adalah timbunan. Untuk menyertakan indeks nonclustered yang dipartisi dalam hasil kueri, hapus atau komentari AND i.type <= 1
dari kueri.
SELECT
t.[object_id] AS ObjectID
, SCHEMA_NAME(t.schema_id) AS SchemaName
, t.name AS TableName
, ic.column_id AS PartitioningColumnID
, c.name AS PartitioningColumnName
, i.name as IndexName
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.[object_id] = i.[object_id]
AND i.[type] <= 1 -- clustered index or a heap
JOIN sys.partition_schemes AS ps
ON ps.data_space_id = i.data_space_id
JOIN sys.index_columns AS ic
ON ic.[object_id] = i.[object_id]
AND ic.index_id = i.index_id
AND ic.partition_ordinal >= 1 -- because 0 = non-partitioning column
JOIN sys.columns AS c
ON t.[object_id] = c.[object_id]
AND ic.column_id = c.column_id
WHERE t.name = 'PartitionTable';
GO
Menentukan baris menjelaskan kemungkinan rentang nilai di setiap partisi
Kueri berikut mengembalikan baris menurut partisi untuk tabel PartitionTable
, dan deskripsi 'operator perbandingan' untuk fungsi partisi yang digunakan. Kueri asli disediakan oleh Kalen Delaney.
Kueri menggunakan type
kolom dalam sys.indexes untuk mengembalikan hanya informasi untuk indeks tabel berkluster, atau untuk tabel dasar jika tabel adalah timbunan. Untuk menyertakan indeks nonclustered yang dipartisi dalam hasil kueri, hapus atau komentari AND i.type <= 1
dari kueri.
SELECT SCHEMA_NAME(t.schema_id) AS SchemaName, t.name AS TableName, i.name AS IndexName,
p.partition_number AS PartitionNumber, f.name AS PartitionFunctionName, p.rows AS Rows, rv.value AS BoundaryValue,
CASE WHEN ISNULL(rv.value, rv2.value) IS NULL THEN 'N/A'
ELSE
CASE WHEN f.boundary_value_on_right = 0 AND rv2.value IS NULL THEN '>='
WHEN f.boundary_value_on_right = 0 THEN '>'
ELSE '>='
END + ' ' + ISNULL(CONVERT(varchar(64), rv2.value), 'Min Value') + ' ' +
CASE f.boundary_value_on_right WHEN 1 THEN 'and <'
ELSE 'and <=' END
+ ' ' + ISNULL(CONVERT(varchar(64), rv.value), 'Max Value')
END AS TextComparison
FROM sys.tables AS t
JOIN sys.indexes AS i
ON t.object_id = i.object_id
JOIN sys.partitions AS p
ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.partition_schemes AS s
ON i.data_space_id = s.data_space_id
JOIN sys.partition_functions AS f
ON s.function_id = f.function_id
LEFT JOIN sys.partition_range_values AS r
ON f.function_id = r.function_id and r.boundary_id = p.partition_number
LEFT JOIN sys.partition_range_values AS rv
ON f.function_id = rv.function_id
AND p.partition_number = rv.boundary_id
LEFT JOIN sys.partition_range_values AS rv2
ON f.function_id = rv2.function_id
AND p.partition_number - 1= rv2.boundary_id
WHERE
t.name = 'PartitionTable'
AND i.type <= 1
ORDER BY t.name, p.partition_number;
Kolom menjelaskan TextComparison
kemungkinan rentang nilai di setiap partisi berdasarkan definisi fungsi partisi. Berikut adalah tampilan contoh hasil dari kueri:
Nama Skema | TableName | IndexName | PartitionNumber | PartitionFunctionName | baris | BoundaryValue | Perbandingan Teks |
---|---|---|---|---|---|---|---|
dbo | PartitionTable | PK_PartitionTable | 1 | PFTest | 0 | 2022-03-01 00:00:00.000 | >= Nilai Min dan < 1 Mar 2022 12:00 |
dbo | PartitionTable | PK_PartitionTable | 2 | PFTest | 2 | 2022-04-01 00:00:00.000 | >= 1 Mar 2022 12:00 DAN < Apr 1 2022 12:00 |
dbo | PartitionTable | PK_PartitionTable | 3 | PFTest | 1 | 2022-05-01 00:00:00.000 | >= Apr 1 2022 12:00AM dan < Mei 1 2022 12:00 |
dbo | PartitionTable | PK_PartitionTable | 4 | PFTest | 0 | 2022-06-01 00:00:00.000 | >= 1 Mei 2022 12:00AM dan < 1 Jun 2022 12:00 |
dbo | PartitionTable | PK_PartitionTable | 5 | PFTest | 1 | 2022-07-01 00:00:00.000 | >= 1 Jun 2022 12:00AM dan < Jul 1 2022 12:00 |
dbo | PartitionTable | PK_PartitionTable | 6 | PFTest | 0 | NULL | >= 1 Jul 2022 12:00AM dan < Nilai Maks |
Batasan
Pelajari tentang batasan serta pertimbangan performa untuk partisi dalam Batasan
Langkah berikutnya
Pelajari selengkapnya tentang konsep terkait dalam artikel berikut:
- Tabel dan indeks yang dipartisi
- Meluaskan skala dengan Azure SQL Database
- Tabel partisi di kumpulan SQL khusus
- Arsitektur dan panduan desain indeks SQL Server dan Azure SQL
- ALTER DATABASE File and Filegroup Options (Transact-SQL)
- MEMBUAT FUNGSI PARTISI (Transact-SQL)
- MEMBUAT SKEMA PARTISI (Transact-SQL)
- BUAT TABEL (Transact-SQL)