|
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é.
|