Dela via


Använda tabell- och indexpartitionering

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsSQL-databas i Förhandsversion av Microsoft Fabric

Data kan lagras med hjälp av lagringsalgoritmerna som tillhandahålls av partitionerade tabeller och index. Partitionering kan göra stora tabeller och index mer hanterbara och skalbara.

Index- och tabellpartitionering

Funktionen gör att index- och tabelldata kan spridas över flera filgrupper i partitioner. En partitionsfunktion definierar hur raderna i en tabell eller ett index mappas till en uppsättning partitioner baserat på värdena för vissa kolumner, som kallas partitioneringskolumner. Ett partitionsschema mappar varje partition som anges av partitionsfunktionen till en filgrupp. På så sätt kan du utveckla arkiveringsstrategier som gör det möjligt att skala tabeller mellan filgrupper och därmed fysiska enheter.

Objektet Database innehåller en samling PartitionFunction objekt som representerar de implementerade partitionsfunktionerna och en samling PartitionScheme objekt som beskriver hur data mappas till filgrupper.

Varje Table objekt och Index objekt anger vilket partitionsschema som används i PartitionScheme egenskapen och anger kolumnerna PartitionSchemeParameterCollectioni .

Example

För följande kodexempel måste du välja programmeringsmiljö, programmeringsmall och programmeringsspråket för att skapa ditt program. Mer information finns i Skapa ett Visual C# SMO-projekt i Visual Studio .NET.

Konfigurera ett partitionsschema för en tabell i Visual C#

Kodexemplet visar hur du skapar en partitionsfunktion och ett partitionsschema för TransactionHistory tabellen i exempeldatabasen AdventureWorks2022. Partitionerna delas upp efter datum med avsikten att separera gamla poster i TransactionHistoryArchive tabellen.

{   
//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();   
}   

Konfigurera ett partitionsschema för en tabell i PowerShell

Kodexemplet visar hur du skapar en partitionsfunktion och ett partitionsschema för TransactionHistory tabellen i exempeldatabasen AdventureWorks2022. Partitionerna delas upp efter datum med avsikten att separera gamla poster i TransactionHistoryArchive tabellen.

# 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()  

See Also

Partitionerade tabeller och index