Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 21847|Válasz: 0

[Kommunikáció] SQL Server Összefoglaló a partíciós táblákról

[Linket másol]
Közzétéve 2021. 07. 13. 13:52:31 | | |

Hivatalos dokumentáció


A partíciós tábla létrehozásának magas szintű lépései

1. Hozz létre egy fájlcsoportot (hasonlóan az oracle tablespace-hez), természetesen nem lehet létrehozni, minden partíciót egy fájlcsoportba lehet tenni

2. Létrehozni egy partíciós függvényt, és az adatokat eloszlatni a tartomány szerint

3. Állítsunk fel egy partíciós sémát, társítsuk a partíciós függvényt, és a fájlcsoportot is, a partíciós függvény több tartományra osztja az adatokat, több fájlcsoportot is kell társítani, természetesen ezeket a partíciós tartományokat ugyanabba a fájlcsoportba is beteheted

4. Készíts egy táblázatot, és társítsd a zónázási rendszert


Egy bogárral találkoztunk

Ha közvetlenül jobbra kattintasz a táblára a tábla szerkezetének exportálásához, nem exportálhatod a partíciós információkat, és csak a táblázat partíciós adatait lehet exportálni az adatbázis-feladat generáló szkriptre jobb kattintással


Néhány következtetés a partíciós táblázatból:

1. A partíciós mezőket nem feltétlenül kell indexelni

2. A partíciós mezők klaszterezett indexként vagy noklaszterelt indexként hozhatók létre

3. A partíciós mezők, legyenek azok klaszterelt vagy noklaszterelt indexek, klaszterezett indexekké épülnek össze anélkül, hogy társult partíciós sémák lennének, és a felosztott tábla nem particionált táblává válik

4. Alakíts át egy átlagos táblát partíciós táblává, egyszerűen hozz létre egy klaszterelt indexet a táblában, és használd a csoportos indexen a partíciós sémát. Például, amikor egy nem partíciós tábla 1. mezője klaszterelt indexet hoz létre, és egy partíciós sémához kapcsolódik, akkor a tábla átalakul egy partíciós táblává, a partektált mező pedig az 1. mező.

5. Alakítsd át a partíciós táblát normál táblává, ha van egy osztómező indexkel, építsd újra a partíciós mezőt klaszterált indexként, és ne kapcsolódjon a partíciós sémához, ha a partíciós mezőnek nincs indexe, a partíciós mező létrehozhat egy új klaszterezett indexet, és nem kapcsolódik a partíciós sémához

6. Egy normál tábla átváltása partíciós táblára vagy egy partíciós tábla áthelyezése csak klaszterelt indexek használatával érhető el, mert klaszterizált indexekkel az indexszervező táblák léteznek, és a táblák újraelosztása a klaszterezett indexek rekonstrukciójával történik. Ha a normál tábla partíciós táblává válik, rekonstruáljuk a partíciós mezőt klaszterelt indexté, és társítsuk a partíciós sémához, ha pedig a partíciós tábla normál táblává válik, akkor a partíciós mezőt klaszterezett indexré alakítsuk vissza anélkül, hogy a partíciós sémát társítanád.

7. A partíciós tábla létrehozásához az egyediségi korlátozásnak tartalmaznia kell egy partíciós oszlopot

8. Partíciós séma létrehozásakor biztosítani kell, hogy a fájlcsoportok száma egyezzen a partíciós függvény partíciós tartományi szegmensével, és nem számít, ha a fájlcsoport neve duplikált.

9. A partíciós függvények és a partíciós sémák adatbázisban vannak, nem az egész példányra néznek

10. A partíciós tábla túl nagy ahhoz, hogy sok helyet foglaljon el, és a méret sem változik néhány mező törlése után


Lépések a partíciós tábla létrehozásához

1.1. Példa fájlcsoport létrehozására

alter database test1 add filegroup part1;

alter database test1 add filegroup part1000;

alter database test1 add filegroup part2000;

alter database test1 add filegroup part3000;

alter database test1 add filegroup part4000;

1.2. Állítsunk fel egy fájlpéldát és társítsuk egy fájlcsoportot

ADATBÁZIS MÓDOSÍTÁSA test1 FÁJL HOZZÁADÁSA (NAME = test1part1,FILENAME = 'G:\test1part1.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) FÁJLCSOPORTHOZ RÉSZ1;

ADATBÁZIS MÓDOSÍTÁSA test1 FÁJL HOZZÁADÁSA (NAME = test1part1000,FILENAME = 'G:\test1part1000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) FÁJLCSOPORTHOZ PART1000;

ADATBÁZIS MÓDOSÍTÁSA test1 FÁJL HOZZÁADÁSA (NAME = TEST1part2000,FILENAME = 'G:\test1part2000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) FÁJLCSOPORTHOZ PART2000;

ADATBÁZIS MÓDOSÍTÁSA test1 FÁJL HOZZÁADÁSA (NAME = test1part3000,FILENAME = 'G:\test1part3000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) A PART3000 FÁJLCSOPORTBA;

ADATBÁZIS MÓDOSÍTÁSA test1 FÁJL HOZZÁADÁSA (NAME = test1part4000,FILENAME = 'G:\test1part4000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) FÁJLCSOPORTHOZ PART4000;

2. Egy példa a partíciós függvény létrehozására, a partfun1-nek nevezzük a partfun1-et

CREATE PARTITION FUNCTION partfun1 (int)

ÉRTÉKEK BAL OLDALI TARTOMÁNYA ('1000','2000','3000','4000')

--ÉRTÉKEK ('1000', '2000', '3000', '4000') azt jelzi, hogy a táblázatot 5 zónára osztják, amelyek a táblázatmezők értékeinek mérete szerint vannak osztva, az öt zóna a legkisebb – 1000, 1000-2000, 2000-3000, 3000-4000, 4000-legnagyobb

3. Egy példa egy séma létrehozására: társítsuk a partfun1 partíciós függvényt, és társítsuk a fájlcsoportot

HOZZON LÉTRE PARTÍCIÓ partschema1

PARTFUN1 RÉSZLEGKÉNT

TO (1. rész, 1000. rész, 2000. rész, 3000. rész, 4000. rész);

--Több fájlcsoportra épült: 1. rész, 1000. rész, 2000. rész, 3000. rész és 4000. rész

LÉTREHOZZA PARTÍCIÓ SÉMA partschema2

PARTFUN1 RÉSZLEGKÉNT

TO (1. RÉSZ,[ELSŐDÍSZ],[ELSŐDÍSZ],[ELSŐDLEGES],[ELSŐDÍSZ]);

--A 1. rész, [PRIMER] fájlcsoportra épülve nem gond az 1. rész [PRIMERARY]-re cserélni, így hasonló ahhoz, mint a [PRIMERARY] fájlcsoporton építkezni

LÉTREHOZNI PARTÍCIÓ stábát partschema3

PARTFUN1 RÉSZLEGKÉNT

ALL TO (1. rész);

--mind a part1 fájlcsoportra épült

PARTITION SCHEME LÉTREHOZÁSA partschema4

PARTFUN1 RÉSZLEGKÉNT

MIND ([ELSŐDESZŰ]);

--mind a [PRIMER] fájlcsoportra épült

4. Példa partíciós tábla létrehozására

KÉSZÍTSD TÁBLÁZATOT PARTTABLE1(

[ID] [int] NEM NULL,

[IDText] [nvarchar] (max) NULLA

[Dátum] [dátumidő] NULL)

ON [partschema1](ID);

bekerüljön a parttable1-be értékeket (1,'1',getdate()-4);

bekerüljön a parttable1-be értékek (1001,'1001',getdate()-3);

beillesztés a parttable1-be értékek (2001,'2001',getdate()-2);

bekerüljön a parttable1-be értékek (3001,'3001',getdate()-1);

beillesztés a parttable1-be értékek (4001,'4001',getdate());

5. Ellenőrizd a partíciós tábla adatait

SELECT * A 1. résztáblázatból;

--Visszaadja a partíciós tábla összes sorát

SELECT különböző $PARTITION. [partfun1] (4) RÉSZTÁBLÁZAT 1;

--Visszanyer, amelyhez tartozik a 4-es azonosító mező értékű sor

VÁLASSZ * A résztáblázat1-ből, ahol $PARTITION. [partfun1] (ID)=2

--Visszaadja az összes sort a második partícióban, az ID a partíció térazonosítója

Megjegyzés: Nem használhatod a SELECT * FROM parttable1 opciót, ahol $PARTITION. [partfun1] (ID)=2 eredményt kap, ami azt jelenti, hogy ez egy partíciós táblázat, és a dolgozat utolsó 7. tesztje nem particionált táblázat, de SELECT * FROM parttable1, ahol $PARTITION. [partfun1] (ID)=2 még mindig eredményt kap


Új partíciók

1. Határozz meg egy fájlcsoportot, amely a partíciós sémához használható (adj hozzá fájlcsoportot a partíciós sémához).

2. Módosítsuk a partíciós függvényt (add hozzá a partíciós függvény adattartományát)

MEGOSZTÁSI SÉMA MÓDOSÍTÁSA részchema1 KÖVETKEZŐ HASZNÁLAT [ELSŐDLEGES]

ALTER PARTITION FUNCTION partfun1() SPLIT RANGE ('4500')

Válassz p.partition_number,p.sorokat a sys.indexes i belső csatlakozása sys.partitions p on p.object_id = i.object_id és i.object_id = object_id('parttable2') sorrendben 1-szer

--Az első állítás, ha a partíciós séma az ALL TO ([PRIMARY]) funkciót használja, ezt az utasítást nem kell végrehajtani

--Egy új partíciót adunk a második állításhoz, a tartomány 4000-4500

--A harmadik állítás igazolja, hogy létezik-e az új partíció, és vannak-e sorok


Delete\Merge partition

ALTER PARTITION FUNCTION partfun1() MERGE RANGE ('2000')

Az 1000-2000-es felosztást törölték, és összevonták a 1000-3000-es csoportba

--Nem lehet ALTER TABLE TABLENAME, DROP PARTITIONNAME végrehajtani, mint az oracle;


Töröld a partíciós táblát és a hozzá tartozó fájlcsoportot

A törlés sorrendje a következő: töröld a partíciós táblát, töröld a partíciós sémát, töröld a partíciós funkciót, végül töröljük a fájlcsoportot, és a megfelelő fájl a törlése után a fájlcsoport törlése után


Példa arra, hogyan alakítsunk át egy partionált táblát normál táblára, és egy normál tábla átalakítására egy partíciós táblává

DOBÁSI TÁBLÁZAT1;

KÉSZÍTSD TÁBLÁZATOT PARTTABLE1(

[Id] [int] IDENTIT(1,1) NEM NULL,

[Név] [varchar] (16) NEM NULL,

[Id2] [int] NEM NULL

) ON partschema1(Id2);

bekerüljön a parttable1-be értékeket ('1',1);

bekerüljön a parttable1 értékekbe ('1001',1001);

bekerüljön a parttable1 értékekbe ('2001',2001);

bekerüljön a parttable1 értékekbe ('3001',3001);

bekerüljön a parttable1-be értékek ('4001',4001);

1. A partíciós táblán létrehozott egyedi korlátozásnak tartalmaznia kell egy partíciós oszlopot.

ALTER TABLE parttable1 ADD KORLÁTOZÁST PK_prattable1_id ELSŐDLEGES KULCS KLASZTEREZETT ([ID] ASC)

Az 'Id2' hibaoszlop az 'PK_prattable1_id' index partíciós oszlopa. Az egyedi index partíciós oszlopainak az index kulcs részhalmazának kell lenniük.

2. Hozz létre egy új klaszterelt indexet a partíciós oszlopban id2, és a parttable1 továbbra is partíciós tábla marad

klaszteres indexeket hozz létre CI_prattable1_id2 a parttable1(id2)-en;

3. A partíciós oszlop id2 nem klaszterezett indexet hoz létre, és a parttable1 továbbra is partíciós tábla

Drop index CI_prattable1_id2 a parttable1-en;

létrehozni nem klaszterált indexeket NCI_prattable1_id2 a parttable1(id2)-en;

4. A nem partektív oszlopazonosító oszlop klaszterelt indexet, parttable1-et vagy partektált táblát hoz létre, ami azt jelzi, hogy a nem partíciós oszlop lehet klaszterindex oszlop

klaszterelt index CI_prattable1_id létrehozása a parttable1(id)-en;

5. A partíciós oszlop ID2 újraépítve egy nem klaszterezett indexké, és nem használ partíciós sémát, a parttable1 továbbra is partíciós tábla

LÉTREHOZZ NEM KLASZTERELT INDEXET NCI_prattable1_id2 PARTTABLE1(ID2)-N, AHOL (DROP_EXISTING = ON) A [PRIMER]-EN;

6. A partíciós oszlop id2 újra összeállítható klaszteres indexké az ON feltétel nélkül, és a parttable1 továbbra is partíciós tábla

Drop index CI_prattable1_id a parttable1-en;

Dropindex NCI_prattable1_id2 a parttable1-en;

klaszteres indexeket hozz létre CI_prattable1_id2 a parttable1(id2)-en;

létrehozz klaszterelt indexet CI_prattable1_id2 a parttable1(id2)-N (DROP_EXISTING = ON);

7. A partíciós oszlop id2 újra összeállítható klaszterelt indexré ON feltétellel, de partíciós séma nélkül, és a parttable1 nem partíciós táblá válik

LÉTREHOZZ KLASZTERELT INDEXET CI_prattable1_id2 PARTTABLE1(ID2)-N, AHOL (DROP_EXISTING = ON) A [PRIMER]-EN;

8. A partíciós oszlop id2 újraépül klaszterelt indexké, és a partíciós séma alkalmazásával a parttable1 partíciós táblá válik

klaszteres indexet hozni CI_prattable1_id2 parttable1(id2)-en WITH (DROP_EXISTING = ON) a partschema1(id2)-en;

9. Miután töröltük a fenti 8-as klaszterezett indexet, a parttable1 továbbra is partíciós tábla marad

Drop index CI_prattable1_id2 a parttable1-en;

10. A partíciós oszlop ID2 klaszterezett indexként jön létre, és nem használja a partíciós sémát, így a parttable1 nem particionált tábla lesz

klaszteres index CI_prattable1_id2 létrehozása a parttable1(id2)-n [PRIMER]-EN;

11. A fenti 10 klaszteres indexének törlése után a parttable1 továbbra is nem partíciós tábla marad

Drop index CI_prattable1_id2 a parttable1-en;

12. A partíciós oszlop id2 újonnan jön létre nem klaszterezett indexként, bár a partíciós sémát használják, mégis nem particionált tábla

nem klaszteres index NCI_prattable1_id2 létrehozása a parttable1(id2) részrészeken1(id2)-en;


Ha a partíciós táblát normál táblává alakítják át, az elsődleges kulcskorlátot töröljük, és a klaszterindexet újraépítik vagy újraépítik az eredeti elsődleges kulcs mezőihez tartozó elsődleges kulcsba, de ez nem kapcsolódik a partíciós sémához

MÓDOSÍTSD Table_name A KORLÁTOZÁST PK_NAME (>

HOZZON LÉTRE KLASZTERELT INDEX PK_NAME Table_name(OSZLOP) FELBONTÁSÁN ([ELSŐDLEGES]-EN;

vagy

MÓDOSÍT TÁBLÁZATOT Table_name HOZZÁADNI A KORLÁTOT PK_NAME ELSŐDLEGES KULCS KLASZTERED(oszlop) A ([ELSŐDLEGES]-EN;


Ha a normál táblát átalakítják egy partíciós táblává, ha az eredeti elsődleges kulcsot meg kell tartani, az elsődleges kulcskorlátot törlik, majd az elsődleges kulcsot úgy hozzák létre, hogy aggregált indexként állítanák be, majd új aggregált indexet hoznak létre, és a partíciós sémát használják az aggregált indexben

MÓDOSÍTSD Table_name A KORLÁTOZÁST PK_NAME (>

MÓDOSÍTANI TÁBLÁZATOT Table_name HOZZÁADNI A KORLÁTOT PK_NAME ELSŐDLEGES KULCS NONCLUSTERED(column) WITH ([PRIMER]-EN;

--Hozz létre egy elsődleges kulcsot, de ne állítsd be klaszterelt indexként

KLASZTEREZETT INDEX index_name Table_name(oszlop) FELBONTÁSI SÉMÁJÁN (Partíció Mező)

--Hozzon létre egy új klaszterezett indexet, amelyben partíciós sémát használnak


Kérdezzük meg a sorok számát és méretét egy partíciós tábla esetében, például a tábla CRM. EmailLog

Executive sp_spaceused 'CRM. EmailLog';


Kérdezzük meg egy partíciós tábla adatait, hogy hány sor van az adott partíción, például a tábla CRM. EmailLog

Select convert(varchar(50), ps.name

) mint partition_scheme,

p.partition_number,

Átalakított (Varchar(10), ds2.name

) fájlcsoportként,

convert(varchar(19), isnull(v.érték, ''), 120) mint range_boundary,

Str(p.sor, 9) mint sorok

from sys.indexes i

Csatlakozz sys.partition_schemes PS-hez i.data_space_id = ps.data_space_id

Csatlakozz sys.destination_data_spaces dds-hez

ps.data_space_id = dds.partition_scheme_id

Csatlakozz sys.data_spaces DS2-höz dds.data_space_id = ds2.data_space_id

join sys.partitions p on dds.destination_id = p.partition_number

és p.object_id = i.object_id, és p.index_id = i.index_id

Csatlakozz sys.partition_functions pf-hez ps.function_id = pf.function_id

BAL CSATLAKOZZ a rendszerekhez. Partition_Range_values v pf.function_id = v.function_id

és v.boundary_id = p.partition_number - pf.boundary_value_on_right

AHOL i.object_id = object_id('crm. EmailLog')

és i.index_id (0, 1)

Rendelés p.partition_number


Lekérdezési partíciós függvények

Válassz * sys.partition_functions


Tekintse meg a partíciós architektúrát

Válassz * sys.partition_schemes


Eredeti cím:A hiperlink bejelentkezés látható.




Előző:A Kafka Windows rendszer egy ideig leáll a lejárat után
Következő:SQL Server DBCC DROPCLEANBUFFERS érvénytelen?
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com