Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 21847|Odpoveď: 0

[Komunikácia] SQL Server Súhrn rozdelených tabuliek

[Kopírovať odkaz]
Zverejnené 13. 7. 2021 13:52:31 | | |

Oficiálna dokumentácia


Vysokoúrovňové kroky na vytvorenie tabuľky partícií

1. Vytvoriť skupinu súborov (podobne ako Oracle Tablespace), samozrejme, nemôžete ju vytvoriť, môžete dať všetky partície do jednej skupiny súborov

2. Zriadiť partition funkciu a rozdeliť dáta podľa rozsahu

3. Vytvorte schému partícií, priradíte partition funkciu a tiež priradíte skupinu súborov, partition funkcia rozdeľuje dáta do viacerých rozsahov, musíte priradiť viacero skupín súborov, samozrejme, tieto rozsahy partícií môžete tiež vložiť do tej istej skupiny súborov

4. Vytvoriť tabuľku a priradiť zónovací plán


Narazil som na chybu

Keď priamo pravým kliknutím na tabuľku exportujete štruktúru tabuľky, nemôžete exportovať informácie o partíciách a informácie o partícii tabuľky môžete exportovať iba pravým kliknutím na skript database-task-generate


Niekoľko záverov z tabuľky rozdelenia:

1. Rozdelené polia nemusia byť nevyhnutne indexované

2. Rozdelené polia môžu byť vytvorené ako zhlukované indexy alebo ako neklastrované indexy

3. Rozdelené polia, či už ide o zhlukované indexy alebo bez nich, sa prebudujú do zhlukovaných indexov bez pridružených schém rozdelenia a rozdelená tabuľka sa stáva nerozdelenou tabuľkou

4. Preveďte obyčajnú tabuľku na rozdelenú tabuľku, jednoducho vytvorte zhlukovaný index v tabuľke a použite rozdelenú schému na zhlukovanom indexe. Napríklad, keď pole 1 nerozdelenej tabuľky vytvorí zhlukovaný index a je spojené so schémou rozdelenia, tabuľka sa prevedie na rozdelenú tabuľku a rozdelené pole je pole 1.

5. Konvertovať rozdelenú tabuľku na normálnu tabuľku, ak existuje pole rozdelenia s indexom, znovu vybudovať rozdelené pole ako zhlukovaný index a nepriradiť sa k schéme rozdelenia; ak pole rozdelenia nemá index, pole rozdelenia môže vytvoriť nový zhlukovaný index a nepriradiť sa k schéme rozdelenia

6. Zmena normálnej tabuľky na tabuľku partícií alebo zmena tabuľky partícií na bežnú tabuľku je možná iba použitím zhlukovaných indexov, pretože pri zhlukovaných indexoch sú organizačné tabuľky indexov a redistribúcia tabuliek sa realizuje rekonštrukciou zhlukovaných indexov. Ak sa obyčajná tabuľka stane rozdelenou tabuľkou, rekonštruujte rozdelenie poľa do zhlukovaného indexu a priradíte ho k schéme rozdelenia, a ak sa tabuľka rozdelenia stane normálnou tabuľkou, rekonštruujte pole rozdelenia do zhlukovaného indexu bez priradenia schémy rozdelenia.

7. Na vytvorenie tabuľky partícií musí obmedzenie jedinečnosti obsahovať stĺpec partície

8. Pri vytváraní schémy partícií je potrebné zabezpečiť, aby počet skupín súborov zodpovedal segmentu partition range funkcie a nezáleží na tom, či je názov skupiny súborov duplikovaný.

9. Funkcie rozdelenia a schémy rozdelenia sú v databáze, nie sú orientované na celú inštanciu

10. Tabuľka partícií je príliš veľká na to, aby zaberala veľa miesta na disku, a jej veľkosť sa po vymazaní niektorých polí stále nemení


Kroky na vytvorenie tabuľky partícií

1.1. Príklad vytvorenia súborovej skupiny

Alter databázový test1 pridať súborovú skupinu časť1;

Alter Database Test1 pridať súborovú skupinu part1000;

Alter databáza test1 pridať súborovú skupinu part2000;

Alter databázový test1 pridať súborovú skupinu part3000;

Alter Database Test1 pridať súborovú skupinu part4000;

1.2. Stanoviť príklad súboru a priradiť skupinu súborov

ALTER DATABÁZOVÝ TEST1 PRIDAŤ SÚBOR(NÁZOV = TEST1part1,NÁZOV SÚBORU = 'G:\test1part1.ndf',VEĽKOSŤ = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DO SÚBOROVEJ SKUPINY časť1;

ALTER DATABÁZOVÝ TEST1 PRIDAŤ SÚBOR(NÁZOV = test1part1000,NÁZOV SÚBORU = 'G:\test1part1000.ndf',VEĽKOSŤ = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DO SÚBOROVEJ SKUPINY časť1000;

ALTER DATABASE TEST1 PRIDAŤ SÚBOR(NAME = test1part2000,FILENAME = 'G:\test1part2000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DO SÚBOROVEJ SKUPINY part 2000;

ALTER DATABÁZOVÝ TEST1 PRIDAŤ SÚBOR(NÁZOV = TEST1part3000,NÁZOV SÚBORU = 'G:\test1part3000.ndf',VEĽKOSŤ = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DO SÚBOROVEJ SKUPINY PART3000;

ALTER DATABÁZOVÝ TEST1 PRIDAŤ SÚBOR(NÁZOV = TEST1part4000,NÁZOV SÚBORU = 'G:\test1part4000.ndf',VEĽKOSŤ = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) DO SÚBOROVEJ SKUPINY part 4000;

2. Príkladom vytvorenia partičnej funkcie je partfun1

CREATE PARTITION FUNCTION partfun1 (int)

AKO ROZSAH PONECHANÝ PRE HODNOTY ('1000', '2000', '3000', '4000')

--HODNOTY ('1000', '2000', '3000', '4000') označujú, že tabuľka bude rozdelená do 5 zón, ktoré sú rozdelené podľa veľkosti hodnôt v tabuľkových poliach, pričom päť zón je najmenších - 1000, 1000-2000, 2000-3000, 3000-4000, 4000-najväčšie

3. Príklad vytvorenia schémy, priradenie partition funkcie partfun1 a priradenie súborovej skupiny

CREATE PARTITION SCHEME partschema1

AS PARTITION partfun1

TO (časť1, časť1000, časť2000, časť3000, časť4000);

--Postavené na viacerých súborových skupinách part1, part1000, part2000, part3000, part4000

CREATE PARTITION SCHEME partschema2

AS PARTITION partfun1

PRE (ČASŤ 1,[PRIMÁRNE],[PRIMÁRNE],[PRIMÁRNE],[PRIMÁRNE]);

--Postavené na part1, skupine súborov [PRIMARY], nie je problém nahradiť part1 skupinou [PRIMARY], aby to bolo podobné ako stavať na skupine súborov [PRIMARY]

CREATE PARTITION SCHEME partschema3

AS PARTITION partfun1

ALL TO (časť 1);

--všetko postavené na súborovej skupine part1

CREATE PARTITION SCHEME partschema4

AS PARTITION partfun1

ALL TO ([PRIMARY]);

--všetko postavené na súborovej skupine [PRIMARY]

4. Príklad vytvorenia tabuľky partícií

VYTVORIŤ TABUĽKUPARTTABLE1(

[ID] [int] NIE NULL,

[IDText] [nvarchar] (Max) NULA

[Dátum] [čas na rande] NULL)

ON [partschema1](ID);

vložte do parttable1 hodnoty (1,'1', getdate()-4);

vložiť do parttable1 hodnoty (1001,'1001', getdate()-3);

vložiť do parttable1 hodnoty (2001,'2001', getdate()-2);

vložte do parttable1 hodnoty (3001,'3001', getdate()-1);

vložiť do parttable1 hodnoty (4001,'4001', getdate());

5. Overiť údaje tabuľky partícií

VYBRAŤ * Z tabuľky dielov1;

--Vráti všetky riadky tabuľky rozdelenia

VYBERTE ODLIŠNÉ $PARTITION. [partfun1] (4) Z parttable1;

--Vráti riadok, ktorý rozdelí riadok s hodnotou ID poľa 4, patrí

VYBERTE * Z parttable1, kde $PARTITION. [partfun1] (ID)=2

--Vráti všetky riadky v druhej partícii, ID je ID poľa partucie

Poznámka: Nemôžete použiť SELECT * FROM parttable1, kde $PARTITION. [partfun1] (ID)=2 má výsledok, čo znamená, že ide o rozdelenú tabuľku, a posledný test 7 tohto článku je nerozdelená tabuľka, ale VYBERTE * FROM parttable1, kde $PARTITION. [partfun1] (ID)=2 má stále výsledok


Nové priečky

1. Špecifikovať skupinu súborov, ktorá môže byť použitá pre schému partícií (pridať skupinu súborov pre schému partcií).

2. Upraviť partition funkciu (pridať dátový rozsah partition function)

ALTER PARTITION SCHEME PARTSCHEMA1 NÁSLEDNE POUŽITÉ [PRIMÁRNE]

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

Vyberte p.partition_number,p.rows z sys.indexes i inner join sys.partitions p on p.object_id = i.object_id a i.object_id = object_id('parttable2') usporiadajte podľa 1

--Prvý príkaz, ak schéma rozdelenia používa ALL TO ([PRIMARY]), toto tvrdenie nemusí byť vykonané

--Do druhého príkazu sa pridá nová partícia, rozsah je 4000-4500

--Tretie tvrdenie overuje, či nové rozdelenie existuje a či existujú riadky


Delete\Merge partition

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

Rozdelenie 1000-2000 bolo zrušené a zlúčené do 1000-3000

--Nemožné vykonať ALTER TABLENAME, DROP PARTITIONNAME, PARTITIONNAME, podobne ako oracle;


Vymažte tabuľku partícií a zodpovedajúcu skupinu súborov

Poradie vymazania je: vymazať tabuľku partícií, vymazať schému partícií, vymazať partition funkciu a nakoniec vymazať skupinu súborov, pričom príslušný súbor sa vymaže po vymazaní skupiny súborov


Príklad konverzie rozdelenej tabuľky na normálnu tabuľku a normálnej tabuľky na rozdelenú tabuľku

DROP TABLE parttable1;

VYTVORIŤ TABUĽKUPARTTABLE1(

[Id] [int] IDENTITY(1,1) NIE NULL,

[Meno] [Varchar] (16) NIE NULL,

[Id2] [int] NIE NULL

) ON partschema1(Id2);

vložiť do Parttable1 hodnoty ('1',1);

vložte do parttable1 hodnoty ('1001', 1001);

vložte do Parttable1 hodnoty ('2001', 2001);

vložiť do Parttable1 hodnoty ('3001',3001);

vložiť do Parttable1 hodnoty ('4001', 4001);

1. Jedinečné obmedzenie vytvorené v tabuľke partícií musí obsahovať stĺpec partcií.

ALTER TABUĽKA PARTTABLE1 PRIDAŤ OBMEDZENIE PK_prattable1_id PRIMÁRNY KĽÚČ ZHLUKOVANÝ ([ID] ASC)

Chybový stĺpec 'Id2' je stĺpec rozdelenia indexu 'PK_prattable1_id'. Stĺpce rozdelenia pre jedinečný index musia byť podmnožinou indexového kľúča.

2. Vytvoriť nový zhlukovaný index v stĺpci oddielu id2 a parttable1 je stále rozdelená tabuľka

vytvoriť zhlukovaný indexový CI_prattable1_id2 na parttable1(id2);

3. Stĺpec oddielu id2 vytvára neklastrovaný index a parttable1 je stále rozdelená tabuľka

drop index CI_prattable1_id2 na parttable1;

vytvoriť neklastrovaný index NCI_prattable1_id2 na parttable1(id2);

4. Stĺpec id stĺpca bez rozdelenia vytvára zhlukovaný index, parttable1 alebo rozdelenú tabuľku, čo naznačuje, že nerozdelený stĺpec môže byť stĺpcom indexu klastra

vytvoriť zhlukovaný indexový CI_prattable1_id na parttable1(id);

5. ID2 stĺpca partície je prestavaný do neklastrovaného indexu a nepoužíva schému partingu, parttable1 je stále tabuľka partícií

vytvoriť neklastrovaný indexový NCI_prattable1_id2 na parttable1(id2) S (DROP_EXISTING = ZAPNUTÉ) NA [PRIMÁRNE];

6. Stĺpec oddielu id2 je rekonštruovaný do zhlukovaného indexu bez podmienky ON a parttable1 je stále tabuľka oddielov

drop index CI_prattable1_id na parttable1;

drop index NCI_prattable1_id2 na parttable1;

vytvoriť zhlukovaný indexový CI_prattable1_id2 na parttable1(id2);

vytvoriť zhlukovaný indexový CI_prattable1_id2 na parttable1(id2) S (DROP_EXISTING = ZAPNUTÉ);

7. Rozdelený stĺpcový id2 sa prebuduje do zhlukovaného indexu s podmienkou ON, ale bez použitia schémy rozdelenia, a parttable1 sa stáva nerozdelenou tabuľkou

Vytvoriť zhlukovaný indexový CI_prattable1_id2 na parttable1(id2) S (DROP_EXISTING = ZAPNUTÉ) NA [PRIMÁRNE];

8. Stĺpec id2 je prestavaný do zhlukovaného indexu a pomocou schémy rozdelenia sa parttable1 stáva rozdelenou tabuľkou

vytvoriť zhlukovaný index CI_prattable1_id2 na parttable1(id2) WITH (DROP_EXISTING = ON) na partschema1(Id2);

9. Po vymazaní zoskupeného indexu v 8 vyššie je parttable1 stále rozdelená tabuľka

drop index CI_prattable1_id2 na parttable1;

10. Stĺpec rozdelenia ID2 sa vytvorí ako zhlukovaný index a nepoužíva schému rozdelenia, a parttable1 sa stáva nerozdelenou tabuľkou

vytvoriť zhlukovaný index CI_prattable1_id2 na parttable1(id2) NA [PRIMÁRNOM];

11. Po vymazaní zhlukovaného indexu vyššie uvedených 10 je parttable1 stále nerozdelená tabuľka

drop index CI_prattable1_id2 na parttable1;

12. Stĺpec rozdelenia id2 je novo vytvorený ako neklastrovaný index, hoci sa používa schéma rozdelenia, stále ide o nerozdelenú tabuľku

vytvoriť neklastrovaný index NCI_prattable1_id2 na parttable1(id2) na partschema1(Id2);


Ak sa rozdelená tabuľka prevedie na normálnu tabuľku, obmedzenie primárneho kľúča sa odstráni a index klastra sa znovu vytvorí alebo prebuduje do primárneho kľúča pre polia pôvodného primárneho kľúča, ale nie je to spojené so schémou rozdelenia

ALTER TABUĽKA Table_name OBMEDZENIE PK_NAME S (>

VYTVORTE PK_NAME ZOSKUPENÉHO INDEXU NA Table_name(stĺpček) S (NA [PRIMÁRNY];

alebo

ALTER TABUĽKA Table_name PRIDAŤ OBMEDZENIE PK_NAME PRIMÁRNY KĽÚČ ZHLUKOVANÝ (stĺpec) S (NA [PRIMÁRNY];


Ak sa normálna tabuľka prevedie na rozdelenú tabuľku, ak sa má pôvodný primárny kľúč ponechať, obmedzenie primárneho kľúča sa vymaže, primárny kľúč sa vytvorí bez toho, aby bol nastavený ako agregovaný index, a potom sa vytvorí nový agregovaný index, pričom sa v agregovanom indexe použije schéma rozdelenia

ALTER TABUĽKA Table_name OBMEDZENIE PK_NAME S (>

ALTER TABUĽKA Table_name PRIDAŤ OBMEDZENIE PK_NAME PRIMÁRNY KĽÚČ NONCLUSTERED(column) S (NA [PRIMÁRNY];

--Vytvoriť primárny kľúč, ale nie nastaviť ako zhlukovaný index

VYTVORIŤ index_name KLASTROVANÉHO INDEXU NA Table_name(stĺpec) NA schéme partície (pole partície)

--Vytvoriť nový zhlukovaný index, v ktorom sa používa schéma rozdelenia


Opýtajte sa na celkový počet riadkov a veľkosť rozdelenej tabuľky, napríklad tabuľka je CRM. EmailLog

Výkonný sp_spaceused 'CRM. EmailLog';


Opýtajte sa na informácie o rozdelenej tabuľke, koľko riadkov má každá partícia, napríklad tabuľka je CRM. EmailLog

Vyberte konvertitu(varchar(50), ps.name

) ako partition_scheme,

p.partition_number,

Konvertita (Varchar(10), ds2.name

) ako súborová skupina,

konvertovať(varchar(19), isnull(v.value, ''), 120) ako range_boundary,

str(p.rows, 9) ako riadky

z sys.indexes i

join sys.partition_schemes ps on i.data_space_id = ps.data_space_id

Pridajte sa k sys.destination_data_spaces DDS

na ps.data_space_id = dds.partition_scheme_id

Pripojte sa sys.data_spaces DS2 na dds.data_space_id = ds2.data_space_id

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

a p.object_id = i.object_id a p.index_id = i.index_id

join sys.partition_functions pf na ps.function_id = pf.function_id

LEFT JOIN sys. Partition_Range_values v na pf.function_id = v.function_id

a v.boundary_id = p.partition_number - pf.boundary_value_on_right

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

a i.index_id v (0, 1)

Objednávka od p.partition_number


Funkcie rozdelenia dotazov

Vyberte * z sys.partition_functions


Zobraziť architektúru partícií

Vyberte * z sys.partition_schemes


Pôvodná adresa:Prihlásenie na hypertextový odkaz je viditeľné.




Predchádzajúci:Systém Kafka Windows sa po určitom čase zasekne
Budúci:SQL Server DBCC DROPCLEANBUFFERS je neplatný?
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com