Bagikan melalui


Menggunakan Pemartisian Tabel dan Indeks

Berlaku untuk: SQL ServerAzure SQL Database Azure SQL Managed Instance Azure Synapse Analytics

Data dapat disimpan dengan menggunakan algoritma penyimpanan yang disediakan oleh Tabel dan Indeks Yang Dipartisi. Pemartisian dapat membuat tabel dan indeks besar lebih mudah dikelola dan dapat diskalakan.

Pemartisian Indeks dan Tabel

Fitur ini memungkinkan data indeks dan tabel tersebar di beberapa grup file dalam partisi. Fungsi partisi menentukan bagaimana baris tabel atau indeks dipetakan ke sekumpulan partisi berdasarkan nilai kolom tertentu, yang disebut sebagai kolom partisi. Skema partisi memetakan setiap partisi yang ditentukan oleh fungsi partisi ke grup file. Ini memungkinkan Anda mengembangkan strategi pengarsipan yang memungkinkan tabel diskalakan di seluruh grup file, dan oleh karena itu perangkat fisik.

Objek Database berisi kumpulan PartitionFunction objek yang mewakili fungsi partisi yang diimplementasikan dan kumpulan PartitionScheme objek yang menjelaskan bagaimana data dipetakan ke grup file.

Setiap Table objek dan Index menentukan skema partisi mana yang digunakannya dalam PartitionScheme properti dan menentukan kolom di PartitionSchemeParameterCollection.

Contoh

Untuk contoh kode berikut, Anda harus memilih lingkungan pemrograman, templat pemrograman, dan bahasa pemrograman untuk membuat aplikasi Anda. Untuk informasi selengkapnya, lihat Membuat Proyek SMO Visual C# di Visual Studio .NET.

Menyiapkan Skema Partisi untuk Tabel di Visual C#

Contoh kode menunjukkan cara membuat fungsi partisi dan skema partisi untuk TransactionHistory tabel dalam database sampel AdventureWorks2022. Partisi dibagi berdasarkan tanggal dengan niat memisahkan rekaman lama ke TransactionHistoryArchive dalam tabel.

{   
//Connect to the local, default instance of SQL Server.   
Server srv;   
srv = new Server();   
//Reference the AdventureWorks2022 database.   
Database db;   
db = srv.Databases("AdventureWorks2022");   
//Define and create three new file groups on the database.   
FileGroup fg2;   
fg2 = new FileGroup(db, "Second");   
fg2.Create();   
FileGroup fg3;   
fg3 = new FileGroup(db, "Third");   
fg3.Create();   
FileGroup fg4;   
fg4 = new FileGroup(db, "Fourth");   
fg4.Create();   
//Define a partition function by supplying the parent database and name arguments in the constructor.   
PartitionFunction pf;   
pf = new PartitionFunction(db, "TransHistPF");   
//Add a partition function parameter that specifies the function uses a DateTime range type.   
PartitionFunctionParameter pfp;   
pfp = new PartitionFunctionParameter(pf, DataType.DateTime);   
pf.PartitionFunctionParameters.Add(pfp);   
//Specify the three dates that divide the data into four partitions.   
object[] val;   
val = new object[] {"1/1/2003", "1/1/2004", "1/1/2005"};   
pf.RangeValues = val;   
//Create the partition function.   
pf.Create();   
//Define a partition scheme by supplying the parent database and name arguments in the constructor.   
PartitionScheme ps;   
ps = new PartitionScheme(db, "TransHistPS");   
//Specify the partition function and the filegroups required by the partition scheme.   
ps.PartitionFunction = "TransHistPF";   
ps.FileGroups.Add("PRIMARY");   
ps.FileGroups.Add("second");   
ps.FileGroups.Add("Third");   
ps.FileGroups.Add("Fourth");   
//Create the partition scheme.   
ps.Create();   
}   

Menyiapkan Skema Partisi untuk Tabel di PowerShell

Contoh kode menunjukkan cara membuat fungsi partisi dan skema partisi untuk TransactionHistory tabel dalam database sampel AdventureWorks2022. Partisi dibagi berdasarkan tanggal dengan niat memisahkan rekaman lama ke TransactionHistoryArchive dalam tabel.

# Set the path context to the local, default instance of SQL Server.  
CD \sql\localhost\default  
  
#Get a server object which corresponds to the default instance  
$srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server  
$db = $srv.Databases["AdventureWorks"]  
#Create four filegroups  
$fg1 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "First"  
$fg2 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "Second"  
$fg3 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "Third"  
$fg4 = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Filegroup -argumentlist $db, "Fourth"  
  
#Define a partition function by supplying the parent database and name arguments in the constructor.  
$pf =  New-Object -TypeName Microsoft.SqlServer.Management.SMO.PartitionFunction -argumentlist $db, "TransHistPF"  
$T = [Microsoft.SqlServer.Management.SMO.DataType]::DateTime  
$T  
$T.GetType()  
#Add a partition function parameter that specifies the function uses a DateTime range type.  
$pfp =  New-Object -TypeName Microsoft.SqlServer.Management.SMO.PartitionFunctionParameter -argumentlist $pf, $T  
  
#Specify the three dates that divide the data into four partitions.   
#Create an array of type object to hold the partition data  
$val = "1/1/2003"."1/1/2004","1/1/2005"  
$pf.RangeValues = $val  
$pf  
#Create the partition function  
$pf.Create()  
  
#Create partition scheme  
$ps = New-Object -TypeName Microsoft.SqlServer.Management.SMO.PartitionScheme -argumentlist $db, "TransHistPS"  
$ps.PartitionFunction = "TransHistPF"  
  
#add the filegroups to the scheme   
$ps.FileGroups.Add("PRIMARY")  
$ps.FileGroups.Add("Second")  
$ps.FileGroups.Add("Third")  
$ps.FileGroups.Add("Fourth")  
  
#Create it at the server  
$ps.Create()  

Lihat Juga

Tabel dan Indeks yang Dipartisi