|
Oficiālā dokumentācija
Augsta līmeņa soļi, lai izveidotu nodalījuma tabulu 1. Izveidojiet failu grupu (līdzīgi oracle tablespace), protams, jūs to nevarat izveidot, jūs varat ievietot visus nodalījumus vienā failu grupā 2. Izveidojiet nodalījuma funkciju un izplatiet datus atbilstoši kādam diapazonam 3. Izveidojiet nodalījuma shēmu, saistiet nodalījuma funkciju, kā arī saistiet failu grupu, nodalījuma funkcija sadala datus vairākos diapazonos, jums ir jāsaista vairākas failu grupas, protams, jūs varat arī ievietot šos nodalījumu diapazonus vienā failu grupā 4. Izveidojiet tabulu un saistiet zonējuma shēmu
Radās kļūda Tieši ar peles labo pogu noklikšķinot uz tabulas, lai eksportētu tabulas struktūru, nodalījuma informāciju nevar eksportēt, un tabulas nodalījuma informāciju var eksportēt, tikai ar peles labo pogu noklikšķinot uz datu bāzes uzdevumu ģenerēšanas skripta
Daži secinājumi no nodalījuma tabulas: 1. Sadalītie lauki nav obligāti jāindeksē 2. Sadalītos laukus var izveidot kā klasterizētus indeksus vai noclustered indeksus 3. Sadalītie lauki, neatkarīgi no tā, vai tie ir sagrupēti indeksi vai nesagrupēti indeksi, tiek pārveidoti par sagrupētiem indeksiem bez saistītajām nodalījuma shēmām, un sadalītā tabula kļūst par nesadalītu tabulu 4. Pārveidojiet parasto tabulu par sadalītu tabulu, vienkārši izveidojiet tabulā sagrupētu indeksu un izmantojiet sadalījuma shēmu sagrupētajā indeksā. Piemēram, ja nesadalītas tabulas 1. lauks izveido sagrupētu indeksu un ir saistīts ar sadalīšanas shēmu, tabula tiek pārvērsta par sadalītu tabulu, un sadalītais lauks ir 1. lauks. 5. Pārveidojiet sadalīto tabulu par parastu tabulu, ja ir nodalījuma lauks ar indeksu, pārveidojiet sadalīto lauku kā sagrupētu indeksu un nesaistiet ar nodalījuma shēmu, ja nodalījuma laukam nav indeksa, nodalījuma lauks var izveidot jaunu sagrupētu indeksu un nesaistīt ar nodalījuma shēmu 6. Parastās tabulas nomaiņa uz nodalījuma tabulu vai nodalījuma tabulas nomaiņa uz parasto tabulu var tikt panākta tikai, izmantojot klasterizētus indeksus, jo ar klasterizētiem indeksiem ir indeksu organizācijas tabulas, un tabulu pārdale tiek realizēta, rekonstruējot klasterizētos indeksus. Ja parastā tabula kļūst par sadalītu tabulu, rekonstruējiet nodalījuma lauku sagrupētā indeksā un saistiet to ar nodalījuma shēmu, un, ja nodalījuma tabula kļūst par parastu tabulu, rekonstruējiet nodalījuma lauku sagrupētā indeksā, nesaistot nodalījuma shēmu. 7. Lai izveidotu nodalījuma tabulu, unikalitātes ierobežojumam jāietver nodalījuma kolonna 8. Veidojot nodalījuma shēmu, ir jānodrošina, lai failu grupu skaits atbilstu nodalījuma funkcijas nodalījuma diapazona segmentam, un nav svarīgi, vai failu grupas nosaukums ir dublēts. 9. Sadalīšanas funkcijas un nodalījuma shēmas atrodas datu bāzē, nevis saskaras ar visu instanci 10. Nodalījuma tabula ir pārāk liela, lai aizņemtu daudz vietas diskā, un pēc dažu lauku dzēšanas izmērs joprojām nemainās
Nodalījuma tabulas izveides soļi 1.1. Failu grupas izveides piemērs mainīt datu bāzes testu1 pievienot failu grupu part1; mainīt datu bāzes testu1 pievienot failu grupu part1000; mainīt datu bāzes testu1 pievienot failu grupu part2000; mainīt datu bāzes testu1 pievienot failu grupu part3000; mainīt datu bāzes testu1 pievienot failu grupu part4000; 1.2. Izveidojiet faila piemēru un saistiet failu grupu MAINĪT DATU BĀZES TEST1 PIEVIENOT FAILU (NAME = test1part1,FILENAME = 'G:\test1part1.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) FAILU GRUPAI part1; MAINĪT DATU BĀZES TEST1 PIEVIENOT FAILU (NOSAUKUMS = test1part1000,FAILA nosaukums = 'G:\test1part1000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) FAILU GRUPAI part1000; MAINĪT DATU BĀZES TEST1 PIEVIENOT FAILU (NOSAUKUMS = test1part2000,FAILA nosaukums = 'G:\test1part2000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) FAILU GRUPAI part2000; MAINĪT DATU BĀZES TEST1 PIEVIENOT FAILU (NOSAUKUMS = test1part3000,FAILA nosaukums = 'G:\test1part3000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) FAILU GRUPAI part3000; MAINĪT DATU BĀZES TEST1 PIEVIENOT FAILU (NAME = test1part4000,FILENAME = 'G:\test1part4000.ndf',SIZE = 5MB,MAXSIZE = 100MB,FILEGROWTH = 5MB) FAILU GRUPAI part4000; 2. Nodalījuma funkcijas izveides piemērs, nodalījuma funkciju sauc par partfun1 IZVEIDOT NODALĪJUMA FUNKCIJU partfun1 (int) KĀ VĒRTĪBU DIAPAZONS ('1000','2000','3000','4000') --VALUES ('1000', '2000', '3000', '4000') norāda, ka tabula tiks sadalīta 5 zonās, kas tiek sadalītas atbilstoši tabulas lauku vērtību lielumam, piecas zonas ir mazākās - 1000, 1000-2000, 2000-3000, 3000-4000, 4000-lielākās 3. Shēmas izveides piemērs, nodalījuma funkcijas partfun1 saistīšana un failu grupas saistīšana IZVEIDOT NODALĪJUMA SHĒMU partschema1 KĀ PARTITION partfun1 TO (1. daļa, 1000. daļa, 2000. daļa, 3000. daļa, 4000. daļa); - Veidots uz vairākām failu grupām part1, part1000, part2000, part3000, part4000 IZVEIDOT NODALĪJUMA SHĒMU partschema2 KĀ PARTITION partfun1 UZ (1. DAĻA,[PRIMĀRAIS],[PRIMĀRAIS],[PRIMĀRAIS],[PRIMĀRAIS]); --Veidots uz part1, [PRIMARY] failu grupas, nav problēmu aizstāt part1 ar [PRIMARY], lai tas būtu līdzīgs [PRIMARY] failu grupas veidošanai IZVEIDOT NODALĪJUMA SHĒMU partschema3 KĀ PARTITION partfun1 ALL TO (1. daļa); --viss veidots uz part1 failu grupas IZVEIDOT NODALĪJUMA SHĒMU partschema4 KĀ PARTITION partfun1 VISI UZ ([PRIMĀRAIS]); --viss veidots uz [PRIMARY] failu grupas 4. Nodalījuma tabulas izveides piemērs IZVEIDOT TABULU parttable1( [ID] [int] NAV NULLE, [IDText] [nvarchar] (maks.) NULLE [Datums] [datums un laiks] NULL) ON [partschema1](ID); ievietot parttable1 vērtības (1,'1',getdate()-4); ievietot parttable1 vērtības (1001,'1001',getdate()-3); ievietot parttable1 vērtības (2001,'2001',getdate()-2); ievietot parttable1 vērtības (3001,'3001',getdate()-1); ievietot parttable1 vērtības (4001,'4001',getdate()); 5. Pārbaudiet nodalījuma tabulas datus SELECT * FROM parttable1; --Atgriež visas nodalījuma tabulas rindas SELECT atšķirīgas $PARTITION. [partfun1] (4) NO PARTTABLE1; --Atgriež, kuram nodalījumam pieder rinda ar ID lauka vērtību 4 SELECT * FROM parttable1, kur $PARTITION. [partfun1] (ID)=2 --Atgriež visas rindas 2. nodalījumā, ID ir nodalījuma lauka ID Piezīmes: Jūs nevarat izmantot SELECT * FROM parttable1, ja $PARTITION. [partfun1] (ID) = 2 ir rezultāts, tas nozīmē, ka tā ir sadalīta tabula, un šī raksta pēdējais tests 7 ir nesadalīta tabula, bet SELECT * FROM parttable1, kur $PARTITION. [partfun1] (ID)=2 joprojām ir rezultāts
Jaunas starpsienas 1. Norādiet failu grupu, ko var izmantot nodalījuma shēmai (pievienojiet failu grupu nodalījuma shēmai). 2. Modificējiet nodalījuma funkciju (pievienojiet nodalījuma funkcijas datu diapazonu) MAINĪT NODALĪJUMA SHĒMU partschema1 NĀKAMAIS IZMANTOTS [PRIMĀRAIS] FUNKCIJA ALTER PARTITION partfun1() SPLIT RANGE ('4500') atlasiet p.partition_number,p.rows no sys.indexes i iekšējais savienojums sys.partitions p uz p.object_id = i.object_id un i.object_id = object_id('parttable2') secībā ar 1 --Pirmais apgalvojums, ja nodalījuma shēma izmanto ALL TO ([PRIMARY]), šis apgalvojums nav jāizpilda --Otrajam apgalvojumam tiek pievienots jauns nodalījums, diapazons ir 4000-4500 --Trešais apgalvojums pārbauda, vai jaunais nodalījums pastāv un vai ir rindas
Dzēst\Sapludināt nodalījumu FUNKCIJA ALTER PARTITION partfun1() MERGE RANGE ('2000') 1000-2000 sadalījums tika izdzēsts un apvienots ar 1000-3000 --Nevar izpildīt ALTER TABLE TABLENAME DROP PARTITION PARTITIONNAME kā oracle;
Izdzēsiet nodalījuma tabulu un atbilstošo failu grupu Dzēšanas secība ir: izdzēsiet nodalījuma tabulu, izdzēsiet nodalījuma shēmu, izdzēsiet nodalījuma funkciju un visbeidzot izdzēsiet failu grupu, un atbilstošais fails tiek izdzēsts pēc failu grupas dzēšanas
Piemērs, kā pārvērst sadalītu tabulu par parastu tabulu un parastu tabulu par sadalītu tabulu DROP TABLE parttable1; IZVEIDOT TABULU parttable1( [id] [int] IDENTITY(1,1) NAV NULLE, [Vārds] [varčars] (16) NAV NULLE, [Id2] [int] NAV NULL ) ON partschema1(Id2); ievietot parttable1 vērtības ('1',1); ievietot parttable1 vērtības ("1001",1001); ievietot parttable1 vērtības ("2001", 2001); ievietot Parttable1 vērtības ('3001',3001); ievietot parttable1 vērtības ('4001',4001); 1. Nodalījuma tabulā izveidotajam unikālajam ierobežojumam jābūt nodalījuma kolonnai. MAINĪT TABULU PARTTABLE1 PIEVIENOT IEROBEŽOJUMU PK_prattable1_id PRIMĀRĀS ATSLĒGAS KLASTERU ([ID] ASC) Kļūda Kolonna 'Id2' ir indeksa 'PK_prattable1_id' kolonnas nodalījums. Unikāla indeksa nodalījuma kolonnām jābūt indeksa atslēgas apakškopai. 2. Izveidojiet jaunu grupētu indeksu nodalījuma kolonnā id2, un parttable1 joprojām ir sadalīta tabula izveidot grupētu indeksu CI_prattable1_id2 vietnē parttable1(id2); 3. Nodalījuma kolonna id2 izveido nesagrupētu indeksu, un parttable1 joprojām ir sadalīta tabula kritiena indeksa CI_prattable1_id2 uz parttable1; izveidot nesagrupētu indeksa NCI_prattable1_id2 vietnē parttable1(id2); 4. Nesadalītā kolonnas ID kolonna izveido grupētu indeksu, parttable1 vai sadalītu tabulu, norādot, ka nesadalītā kolonna var būt klastera indeksa kolonna izveidot sagrupētu indeksu CI_prattable1_id vietnē parttable1(id); 5. Nodalījuma kolonna ID2 tiek pārveidota par neklasterētu indeksu un neizmanto nodalījuma shēmu, parttable1 joprojām ir nodalījuma tabula izveidot nesagrupētu indeksa NCI_prattable1_id2 vietnē parttable1(id2) AR (DROP_EXISTING = ON) UZ [PRIMĀRAIS]; 6. Nodalījuma kolonna id2 tiek rekonstruēta par grupētu indeksu bez nosacījuma ON, un parttable1 joprojām ir nodalījuma tabula kritiena indeksa CI_prattable1_id uz parttable1; kritiena indeksa NCI_prattable1_id2 uz parttable1; izveidot grupētu indeksu CI_prattable1_id2 vietnē parttable1(id2); izveidot grupētu indeksu CI_prattable1_id2 uz parttable1(id2) AR (DROP_EXISTING = ON); 7. Sadalītā kolonna id2 tiek pārveidota par klastera indeksu ar ON nosacījumu, bet neizmantojot sadalīšanas shēmu, un parttable1 kļūst par nesadalītu tabulu izveidot grupētu indeksa CI_prattable1_id2 vietnē parttable1(id2) AR (DROP_EXISTING = ON) UZ [PRIMĀRAIS]; 8. Nodalījuma kolonna id2 tiek pārveidota par klastera indeksu un, izmantojot sadalīšanas shēmu, parttable1 kļūst par sadalītu tabulu izveidot grupētu indeksu CI_prattable1_id2 uz parttable1(id2) WITH (DROP_EXISTING = ON) uz partschema1(Id2); 9. Pēc klastera indeksa dzēšanas 8 iepriekš, parttable1 joprojām ir sadalīta tabula kritiena indeksa CI_prattable1_id2 uz parttable1; 10. Nodalījuma kolonna ID2 tiek izveidota kā sagrupēts indekss un neizmanto sadalīšanas shēmu, un parttable1 kļūst par nesadalītu tabulu izveidot grupētu indeksu CI_prattable1_id2 parttable1(id2) ON [PRIMĀRAIS]; 11. Pēc iepriekš minētā 10 sagrupētā indeksa dzēšanas parttable1 joprojām ir nesadalīta tabula kritiena indeksa CI_prattable1_id2 uz parttable1; 12. Nodalījuma kolonna id2 ir tikko izveidota kā nesagrupēts indekss, lai gan tiek izmantota sadalīšanas shēma, tā joprojām ir nesadalīta tabula izveidot nesagrupētu indeksa NCI_prattable1_id2 uz parttable1(id2) uz partschema1(Id2);
Ja sadalītā tabula tiek pārvērsta par parastu tabulu, primārās atslēgas ierobežojums tiek dzēsts, un klastera indekss tiek pārveidots vai pārveidots par sākotnējās primārās atslēgas lauku primāro atslēgu, bet tas nav saistīts ar sadalīšanas shēmu MAINĪT TABULU Table_name NOMEST IEROBEŽOJUMU PK_NAME AR (> IZVEIDOJIET SAGRUPĒTU INDEKSA PK_NAME Table_name(kolonna) AR (ON [PRIMĀRAIS]; vai MAINĪT TABULU Table_name PIEVIENOT IEROBEŽOJUMU PK_NAME PRIMĀRĀS ATSLĒGAS CLUSTERED(kolonna) AR (ON [PRIMĀRAIS];
Ja parastā tabula tiek pārvērsta par sadalītu tabulu, ja sākotnējā primārā atslēga ir jāsaglabā, primārās atslēgas ierobežojums tiek dzēsts, un pēc tam primārā atslēga tiek izveidota, neiestatot to kā apkopotu indeksu, un pēc tam tiek izveidots jauns apkopotais indekss, un sadalījuma shēma tiek izmantota apkopotajā indeksā MAINĪT TABULU Table_name NOMEST IEROBEŽOJUMU PK_NAME AR (> MAINĪT TABULU Table_name PIEVIENOT IEROBEŽOJUMU PK_NAME PRIMĀRĀS ATSLĒGAS NONCLUSTERED(COLUMN) AR (ON [PRIMARY]; --Izveidojiet primāro atslēgu, bet neiestatiet kā klastera indeksu IZVEIDOT GRUPĒTU INDEKSA index_name UZ Table_name(kolonna) Nodalījuma shēmā (nodalījuma lauks) --Izveidojiet jaunu klasteru indeksu, kurā tiek izmantota nodalījuma shēma
Vaicājiet kopējo rindu skaitu un sadalītās tabulas lielumu, piemēram, tabula ir CRM. E-pasta žurnāls exec sp_spaceused 'crm. E-pasta žurnāls";
Vaicājiet informāciju par sadalītu tabulu, cik rindu ir katrā nodalījumā, piemēram, tabula ir CRM. E-pasta žurnāls Izvēlieties konvertēt(Varchar(50), ps.name ) kā partition_scheme, p.partition_number, convert(varchar(10), ds2.name ) kā datņu grupu, convert(varchar(19), isnull(v.value, ''), 120) kā range_boundary, str(p.rows, 9) kā rindas no sys.indexes i Pievienojieties sys.partition_schemes ps uz i.data_space_id = ps.data_space_id Pievienojieties sys.destination_data_spaces DDS uz ps.data_space_id = dds.partition_scheme_id Pievienojieties sys.data_spaces DS2 uz dds.data_space_id = ds2.data_space_id Pievienojieties sys.partitions p uz dds.destination_id = p.partition_number un p.object_id = i.object_id un p.index_id = i.index_id Pievienojieties sys.partition_functions pf uz ps.function_id = pf.function_id LEFT JOIN sys. Partition_Range_values v uz pf.function_id = v.function_id un v.boundary_id = p.partition_number - pf.boundary_value_on_right KUR i.object_id = object_id('crm. E-pasta žurnāls') un i.index_id (0, 1) Pasūtīt pēc p.partition_number
Vaicājuma nodalījuma funkcijas Izvēlieties * no sys.partition_functions
Skatīt nodalījuma arhitektūru Izvēlieties * no sys.partition_schemes Sākotnējā adrese:Hipersaites pieteikšanās ir redzama.
|