Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 21847|Atbildi: 0

[Paziņojums] SQL Server sadalīto tabulu kopsavilkums

[Kopēt saiti]
Publicēts 13.07.2021 13:52:31 | | |

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.




Iepriekšējo:Kafka Windows sistēma pēc kāda laika darbības uzkars
Nākamo:SQL Server DBCC DROPCLEANBUFFERS nav derīgs?
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com