|
Virallinen dokumentaatio
Korkean tason vaiheet osiointitaulukon luomiseksi 1. Luo tiedostoryhmä (samankaltainen kuin oracle-taulukkoavaruudessa), tietenkään et voi luoda sitä, voit laittaa kaikki osiot yhteen tiedostoryhmään 2. Luo ositusfunktio ja jaa data sen mukaan, minkä alueen mukaan 3. Luo ositusjärjestelmä, liitä osiointifunktio ja myös tiedostoryhmä, ositusfunktio jakaa tiedot useisiin alueisiin, sinun täytyy liittää useita tiedostoryhmiä, tietysti voit myös sijoittaa nämä osioalueet samaan tiedostoryhmään 4. Laadi taulukko ja liitä kaavoitusjärjestelmä
Hyönteinen kohtasi Kun voit viedä taulukon rakenteen suoraan oikealla hiiren oikealla, et voi viedä osion tietoja, ja voit viedä taulukon osiointitiedot vain hiiren oikealla klikkaamalla tietokanta-tehtävä-generaattoriskriptiä
Joitakin johtopäätöksiä ositustaulukosta: 1. Osioituja kenttiä ei välttämättä tarvitse indeksoida 2. Osioidut kentät voidaan luoda klusteroituina indekseinä tai noklusteroituina indekseinä 3. Osioidut kentät, olivatpa ne klusteroituja tai ei-klusteroituja indeksejä, rakennetaan uudelleen klusteroiduiksi indekseiksi ilman niihin liittyviä osiointimenetelmiä, ja jaettu taulukko muuttuu ei-osioiduksi taulukoksi 4. Muunna tavallinen taulu osioiduksi tauluksi, luo vain klusteroitu indeksi taulukkoon ja käytä klusteroidun indeksin ositusmenetelmää. Esimerkiksi, kun ei-osioidun taulukon kenttä 1 luo klusteroidun indeksin ja liitetään ositusjärjestelmään, taulu muunnetaan jaetuksi tauluksi ja jaettu kenttä on kenttä 1. 5. Muunna osioitu taulukko normaaliksi tauluksi, jos osiokentällä on indeksi, rakenna osioitu kenttä uudelleen klusteroiduksi indeksiksi äläkä liity ositusjärjestelmään, jos osiokentällä ei ole indeksiä, osiokenttä voi luoda uuden klusteroidun indeksin eikä liity ositusjärjestelmään 6. Tavallisen taulukon muuttaminen osiotauluksi tai osiotaulun muuttaminen tavalliseksi tauluksi voidaan toteuttaa vain käyttämällä klusteroituja indeksejä, koska klusteroiduilla indekseillä on indeksointitaulukot, ja taulukoiden uudelleenjakautuminen tapahtuu klusteroitujen indeksien rekonstruoinnilla. Jos tavallinen taulu muuttuu jaetuksi tauluksi, rekonstruoi osituskenttä klusteroiduksi indeksiksi ja liittää se osituskaavioon, ja jos osiotaulu muuttuu normaaliksi tauluksi, rekonstruoi osiokenttä klusteroiduksi indeksiksi ilman, että ositusmenetelmää liitetään. 7. Partition-taulukon luomiseksi yksilöllisyysrajoitteen täytyy sisältää ositussarake 8. Osiointijärjestelmää luotaessa on varmistettava, että tiedostoryhmien määrä vastaa osiofunktion osiointialuetta, eikä ole väliä, onko tiedostoryhmän nimi kaksinkertainen. 9. Osiointifunktiot ja osiointimenetelmät ovat tietokannassa, eivät koko instanssin kohdalla 10. Osiointitaulukko on liian suuri viemään paljon levytilaa, eikä koko muutu, vaikka joitakin kenttiä poistetaan
Vaiheet osiointitaulukon luomiseksi 1.1. Esimerkki tiedostoryhmän muodostamisesta alter database test1 lisää tiedostoryhmä osa 1; alter database test1 lisää tiedostoryhmä part1000; alter database test1 add filegroup part2000; alter database test1 lisää tiedostoryhmä part3000; alter database test1 lisää tiedostoryhmä part4000; 1.2. Luo esimerkki tiedostosta ja liitä tiedostoryhmä MUOKKAA TIETOKANTATESTI 1 LISÄÄ TIEDOSTO (NIMI = TEST1part1,TIEDOSTONIMI = 'G:\test1part1.ndf', KOKO = 5 MB, MAXSIZE = 100 MB, FILEGROWTH = 5 MB) TIEDOSTORYHMÄÄN OSA 1; MUUTA TIETOKANTATESTI 1 LISÄÄ TIEDOSTO (NAME = TEST1part1000,FILENAME = 'G:\test1part1000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TIEDOSTORYHMÄÄN PART1000; MUOKKAA TIETOKANTATESTI 1 LISÄÄ TIEDOSTO (NIMI = TEST1part2000,TIEDOSTONIMI = 'G:\test1part2000.ndf', KOKO = 5 MB, MAXSIZE = 100 MB, FILEGROWTH = 5 MB) TIEDOSTORYHMÄÄN PART2000; MUUTA TIETOKANTATESTI 1 LISÄÄ TIEDOSTO (NAME = TEST1part3000,FILENAME = 'G:\test1part3000.ndf', SIZE = 5MB, MAXSIZE = 100MB, FILEGROWTH = 5MB) TIEDOSTORYHMÄÄN PART3000; MUUTA TIETOKANTATESTI 1 LISÄÄ TIEDOSTO (NIMI = TEST1part4000, TIEDOSTONIMI = 'G:\test1part4000.ndf', KOKO = 5 MB, MAXSIZE = 100 MB, FILEGROWTH = 5 MB) TIEDOSTORYHMÄÄN PART4000; 2. Esimerkki ositusfunktion muodostamisesta, ositusfunktiota kutsutaan partfun1:ksi LUO OSIOTOIMINTO partfun1 (int) ARVOJEN VASEN VAIHTELUVÄLI ('1000','2000','3000','4000') --ARVOT ('1000', '2000', '3000', '4000') tarkoittaa, että taulukko jaetaan viiteen vyöhykkeeseen, jotka on jaettu taulukon kenttien arvojen koon mukaan, viisi vyöhykettä ovat pienimmät - 1000, 1000-2000, 2000-3000, 3000-4000, 4000-suurin 3. Esimerkki skeeman muodostamisesta: liitä ositusfunktio partfun1 ja liittää tiedostoryhmä LUO OSIOKAAVIO osachema1 AS OSITUS partfun1 TO (osa 1, osa 1000, osa 2000, osa 3000, osa 4000); --Rakennettu useisiin tiedostoryhmiin: osa 1, osa 1000, osa 2000, osa 3000 ja osa 4000 LUO OSIOKAAVIO partschema2 AS OSITUS partfun1 TO (OSA 1,[PRIMARY],[PRIMARY],[PRIMARY],[PRIMARY]); --Rakennettu osa 1:n, [PRIMARY] tiedostoryhmän pohjalta, ei ole ongelma korvata osa 1 [PRIMARY]-tiedostoryhmällä, jotta se olisi samankaltainen kuin [PRIMARY]-tiedostoryhmän päälle rakentaminen LUO OSITUSJÄRJESTELMÄ partschema3 AS OSITUS partfun1 ALL TO (osa 1); --kaikki rakennettu Part1-tiedostoryhmään LUO OSITUSJÄRJESTELMÄ osachema4 AS OSITUS partfun1 KAIKKI ([PRIMARY]); --kaikki rakennettu [PRIMARY]-tiedostoryhmälle 4. Esimerkki ositustaulukon muodostamisesta LUO TAULU OSTABLE1( [ID] [int] EI NOLLA, [IDText] [nvarchar] (max) NOLLA [Päivämäärä] [päivämääräaika] NULL) ON [partschema1](ID); lisää osataulukkoon 1 arvot (1,'1',getdate()-4); lisää osataulukkoon 1 arvot (1001,'1001',getdate()-3); lisää Parttable1-arvot (2001,'2001',getdate()-2); lisää osataulukko1-arvot (3001,'3001',getdate()-1); lisää parttable1-arvot (4001,'4001',getdate()); 5. Varmista osiointitaulukon tiedot VALITSE * OSTABLE1:stä; --Palauttaa kaikki osiotaulukon rivit VALITSE erilliset $PARTITION. [partfun1] (4) OSATAULUKOSTA 1; --Palautuksia, jotka jakavat rivin, jonka ID-kentän arvo on 4, kuuluu VALITSE * OSTABLE1:stä, missä $PARTITION. [partfun1] (ID)=2 --Palauttaa kaikki rivit toisessa osiossa, ID on osion kentän ID Huomautus: Et voi käyttää SELECT * FROM parttabletable1, jossa $PARTITION. [partfun1] (ID)=2 saa tuloksen, se tarkoittaa, että kyseessä on jaettu taulukko, ja tämän artikkelin viimeinen testi 7 on ei-osioitu taulukko, mutta VALITSE * OSATAULUKOSTA 1, missä $PARTITION. [partfun1] (ID)=2 on edelleen tulos
Uudet osiot 1. Määritä tiedostoryhmä, jota voidaan käyttää ositusjärjestelmässä (lisää tiedostoryhmä osiojärjestelmälle). 2. Muokkaa ositusfunktiota (lisää osion funktion data-alue) ALTER PARTITION SCHEME osachema1 SEURAAVAKSI KÄYTETTY [ENSISIJAINEN] ALTER PARTITION FUNCTION partfun1() SPLIT RANGE ('4500') Valitse p.partition_number,p.rows sys.indexes i:stä sisäinen liitos sys.partitions p p.object_id = i.object_id ja i.object_id = object_id('parttable2') järjestyksellä 1 --Ensimmäinen lause, jos ositusmenetelmä käyttää ALL TO ([PRIMARY]), tätä lausetta ei tarvitse suorittaa --Toinen lause lisätään uusi osio, alue on 4000–4500 --Kolmas väite varmistaa, onko uusi jako olemassa ja onko rivejä
Delete\Merge partition ALTER PARTITION FUNCTION partfun1() MERGE RANGE ('2000') 1000–2000 jako poistettiin ja yhdistettiin 1000–3000:een --Ei pysty suorittamaan ALTER TABLE TABLENAME DROP PARTITION PARTITIONNAME kuten oracle;
Poista osiointitaulu ja vastaava tiedostoryhmä Poistojärjestys on: poista osiointitaulu, poista osiointijärjestelmä, poista osiointifunktio ja lopuksi poista tiedostoryhmä, ja vastaava tiedosto poistetaan tiedostoryhmän poistamisen jälkeen
Esimerkki jaetun taulukon muuntamisesta normaaliksi tauluksi ja normaalin taulun muuntamisesta jaetuksi tauluksi PUDOTUSTAULUKKO osataulukko1; LUO TAULU OSTABLE1( [Id] [int] IDENTITEETTI(1,1) EI NOLLA, [Nimi] [varchar] (16) EI MITÄTÖN, [Id2] [int] EI NOLLA ) ON partschema1(Id2); lisää osataulukkoon 1 arvot ('1',1); lisää osataulukkoon 1 arvot ('1001',1001); lisää osataulukkoon 1 arvot ('2001', 2001); lisää osataulukkoon 1 arvot ('3001',3001); lisää osataulukkoon 1 arvot ('4001',4001); 1. Osiointitaulukossa luodun yksilöllisen rajoitteen täytyy sisältää osion sarake. VAIHDA TAULUKKO OSTABLE1 LISÄÄ RAJOITUS PK_prattable1_id ENSISIJAISEN AVAIMEN KLUSTEROITU ([ID] ASC) Virhesarake 'Id2' on indeksin 'PK_prattable1_id' osiointisarakke. Uniikin indeksin osiointisarakkeet on oltava indeksiavaimen osajoukko. 2. Luo uusi klusteroitu indeksi osion sarkeeseen id2, ja parttable1 on edelleen ositettu taulukko luoda klusteroituja indeksiä CI_prattable1_id2 parttable1(id2):ssa; 3. Osion sarake id2 luo ei-klusteroidun indeksin, ja parttable1 on edelleen osioitu taulukko pudotusindeksi CI_prattable1_id2 parttable1:ssä; luoda ei-klusteroitu indeksi NCI_prattable1_id2 parttable1(id2):ssa; 4. Ei-osioitu sarakkeen id-sarake luo klusteroidun indeksin, parttable1:n tai osioidun taulukon, mikä osoittaa, että ei-osioitu sarake voi olla klusterin indeksisarake luoda klusteroitu indeksi CI_prattable1_id parttable1(id):ssä; 5. Osion sarake ID2 on rakennettu uudelleen ei-klusteroiduksi indeksiksi eikä käytä ositusjärjestelmää, parttable1 on edelleen ositustaulukko luo ei-klusteroitu indeksi NCI_prattable1_id2 parttable1(id2):SSA, JOSSA (DROP_EXISTING = PÄÄLLÄ) ON [PRIMÄÄRI]; 6. Osion sarake id2 rekonstruoidaan klusteroiduksi indeksiksi ilman ON-ehtoa, ja parttable1 on edelleen ositustaulukko pudotusindeksi CI_prattable1_id parttable1:ssä; pudotusindeksi NCI_prattable1_id2 parttable1:ssa; luoda klusteroituja indeksiä CI_prattable1_id2 parttable1(id2):ssa; luoda klusteroitu indeksi CI_prattable1_id2 parttable1(id2):lle JOSSA (DROP_EXISTING = PÄÄLLÄ); 7. Jaettu sarake id2 rakennetaan uudelleen klusteroiduksi indeksiksi ON-ehtoa käyttäen ilman ositusjärjestelmää, ja parttable1 muuttuu ei-osioiduksi taulukoksi luo klusteroitu indeksi CI_prattable1_id2 parttable1(id2):SSA, JOSSA (DROP_EXISTING = PÄÄLLÄ) ON [PRIMÄÄRI]; 8. Osion sarake id2 rakennetaan uudelleen klusteroiduksi indeksiksi ja ositusmenetelmän avulla parttable1 muuttuu osioiduksi taulukoksi luoda klusteroitu indeksi CI_prattable1_id2 parttable1(id2) WITH (DROP_EXISTING = ON) partschema1(id2):ssa; 9. Kun yllä oleva 8 klusteroitu indeksi on poistettu, osataulukko 1 on edelleen ositettu taulukko pudotusindeksi CI_prattable1_id2 parttable1:ssä; 10. Osion sarake ID2 luodaan klusteroiduksi indeksiksi eikä käytä ositusjärjestelmää, ja parttable1 muuttuu ei-osioiduksi taulukoksi luo klusteroituja indeksiä CI_prattable1_id2 parttable1(id2):lle [PRIMARY]; 11. Yllä mainitun 10:n klusteroidun indeksin poistamisen jälkeen parttable1 on edelleen ei-ositeltu taulukko pudotusindeksi CI_prattable1_id2 parttable1:ssä; 12. Osion sarake id2 on juuri luotu ei-klusteroiduksi indeksiksi, vaikka osiointijärjestelmää käytetään, se on silti ei-osioitu taulukko luoda ei-klusteroitu indeksi NCI_prattable1_id2 parttable1(id2):lle partschema1(id2):lle;
Jos ositettu taulukko muunnetaan normaaliksi tauluksi, ensisijainen avainrajoite poistetaan ja klusteri-indeksi rakennetaan uudelleen tai rakennetaan uudelleen alkuperäisen ensisijaisen avaimen kenttien ensisijaiseksi avaimeksi, mutta se ei liity ositusmenetelmään MUUTA TAULUKKOA Table_name POISTA RAJOITE PK_NAME KUN (> LUO KLUSTEROITU INDEKSI PK_NAME Table_name(sarakke) KANSSA (PÄÄLLÄ [PRIMÄÄRI]; tai MUUTA TAULUKKOA Table_name LISÄÄ RAJOITE PK_NAME PRIMAAVAIN CLUSTERED(sarakke) KANSSA (ON [PRIMÄÄRI];
Jos normaali taulu muunnetaan osioiduksi tauluksi, jos alkuperäinen ensisijainen avain säilytetään, ensisijainen avain poistetaan, ja sitten ensisijainen avain luodaan ilman, että sitä asetetaan aggregoiduksi indeksiksi, ja sitten luodaan uusi aggregoitu indeksi, ja osiointimenetelmää käytetään aggregoidussa indeksissä MUUTA TAULUKKOA Table_name POISTA RAJOITE PK_NAME KUN (> MUOKKAA TAULUKKOA Table_name LISÄÄ RAJOITE PK_NAME ENSISIJAINEN AVAIN UNCLUSTERED(sarakke) KANSSA (ON [PRIMÄÄRI]; --Luo ensisijainen avain, mutta ei aseteta klusteroiduksi indeksiksi LUO KLUSTEROITU INDEKSI index_name Table_name(sarakke) OSITUSJÄRJESTELMÄSSÄ (osiokenttä) --Luo uusi klusteroitu indeksi, jossa käytetään osiointijärjestelmää
Kysy osioidun taulukon rivien kokonaismäärä ja koko, esimerkiksi taulukko on CRM. EmailLog Johtaja sp_spaceused 'CRM. EmailLog';
Kysy osioidun taulukon tietoja, kuinka monta riviä kussakin osiossa on, esimerkiksi taulukko on CRM. EmailLog Valitse muunnos (Varchar(50), ps.name ) partition_scheme, p.partition_number, Convert(Varchar(10), ds2.name ) tiedostoryhmänä, muunna (varchar(19), isnull(v.value, ''), 120) muotoon range_boundary, str(p.rows, 9) riveinä sys.indexes i:stä Liity sys.partition_schemes PS:ään i.data_space_id = ps.data_space_id Liity sys.destination_data_spaces DDS:ään on ps.data_space_id = dds.partition_scheme_id Liity sys.data_spaces DS2:een dds.data_space_id = ds2.data_space_id Join sys.partitions p on dds.destination_id = p.partition_number ja p.object_id = i.object_id ja p.index_id = i.index_id Liity sys.partition_functions pf on ps.function_id = pf.function_id VASEN LIITTYÄ sys:ään. Partition_Range_values v on pf.function_id = v.function_id ja v.boundary_id = p.partition_number - pf.boundary_value_on_right MISSÄ i.object_id = object_id('crm. EmailLog') ja i.index_id (0, 1) Tilaus p.partition_number
Kyselyosiofunktiot Valitse * sys.partition_functions
Katso osion arkkitehtuuri Valitse * sys.partition_schemes Alkuperäinen osoite:Hyperlinkin kirjautuminen on näkyvissä.
|