Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 21847|Vastaus: 0

[Viestintä] SQL Server -yhteenveto osioiduista tauluista

[Kopioi linkki]
Julkaistu 13.7.2021 13.52.31 | | |

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




Edellinen:Kafka Windows -järjestelmä jumiutuu jonkin ajan käytön jälkeen
Seuraava:SQL Server DBCC DROPCLEANBUFFERS on virheellinen?
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com