SQL Server 2005 behandlingen av massive data



Stor størrelsen på databasen er ofte hundrevis av GB, og noen ganger også bruke TB beregningen. Den single-table-data ofte nå millioner av plater, og registrerer antallet vil vokse over tid. Dette ikke bare påvirker effektiviteten i databasen, vedlikehold av databasen øker også vanskelighetsgraden. I tillegg til mengden data tabellen, de forskjellige mønstre tilgang på bordet kan også påvirke ytelsen og tilgjengeligheten. Disse problemene kan være rimelig på et stort bord område er sterkt forbedret. Når tabeller og indekser blir svært store, deling av data kan deles i mindre, mer håndterlige deler forbedre effektiviteten til systemet. Hvis det er flere CPU eller flere disk delsystemer, kan du få bedre ytelse i parallelle operasjoner. Så, for å partisjonere stort bord å håndtere store mengder data en meget effektiv måte. I denne utredningen, et konkret eksempel på hvordan du oppretter og endrer partisjonstabellen, og hvordan du kan vise partisjonstabellen.

1, SQL Server 2005

SQL Server 2005 er Microsofts lansering av SQL Server 2000 etter et intervall på fem år etter lanseringen av en database plattform, til relasjonsdatabase motor for data og strukturerte data gir en mer sikker og pålitelig lagring evner, gir brukere muligheten til å bygge og styre i business, høy tilgjengelighet og høy ytelse data programmer. I tillegg kombinerer SQL Server 2005 analyse, rapportering, integrering, og varsler. Dette gjør at bedriftene å bygge og distribuere kostnadseffektive BI-løsninger for å hjelpe laget gjennom måltavlen, Dashboard, vil Web Services, og data applikasjoner til mobile enheter være i alle områder av virksomheten. Enten en utvikler, databaseadministrator, informasjonsmedarbeidere, eller beslutningstakere, kan SQL Server 2005 være løsningen for å tilby en kreativ, og kan fra dataene Zhonghuo De flere fordeler.

Det bringer nye funksjoner, slik som T-SQL forbedringer, data partisjon, service agenter og med. Net Framework integrering i administrasjon, tilgjengelighet, skalerbarhet, og sikkerhetsforbedringer, og andre aspekter .

2, tabell partisjon realisering metoden

Tabell deling delt i horisontal og vertikal deling partisjon. Horisontal partisjonstabellen i flere tabeller. Hver tabell inneholder samme antall kolonner, men færre rader. For eksempel sa en multi-milliard-rad tabellen inneholder nivået på deling i 12 bord, hver lite bord, en måneds data innenfor et gitt år. Enhver bestemt måned data trenger bare referanse til tilsvarende måned i spørringen tabellen. Den vertikale partisjonen sugd mer enn den opprinnelige tabellen i tabellen inneholder bare færre kolonner. Soneinndeling distrikt nivået er den vanligste måten å presentere dette til nivået av distriktet bestemte realisering.

Horisontal partisjonen brukte metoden er basert på bruk av dataene perioden og nivået på partisjonen. For eksempel sender dette eksempelet en melding Loggen inneholder det siste året av data, men kun regelmessig besøke dette kvartalet dataene. I dette tilfellet, vurdere dataene inn i fire regioner, som hver inneholder bare en fjerdedel av data.

2.1, opprette en fil gruppe

Etableringen av partisjonstabellen først opprette en fil gruppe, og opprette flere filgrupper er hovedsakelig for å få god I / O balanse. Under normale omstendigheter, er filen antall av de beste gruppen av det samme nummeret i området, og disse gruppene vanligvis plassert i en annen fil på disken. Hver fil gruppe kan dannes av en eller flere filer, må hver partisjon kan tilordnes til en fil gruppe. En fil gruppe kan brukes av flere partisjoner. For å bedre håndtere data (for eksempel, for å få mer nøyaktig backup kontroll) på partisjonstabellen bør være utformet slik at bare relevante data, eller logisk gruppering av data i samme fil gruppen. Bruk ALTER DATABASE, legger du til logiske arkiv gruppenavnet:

ALTER DATABASE [DeanDB] ADD FILEGROUP [FG1]

DeanDB for databasenavn, FG1 filen gruppenavn. Opprett en fil gruppe, deretter bruke ALTER DATABASE å legge til filer i filen gruppen:

ALTER DATABASE [DeanDB] ADD FIL (NAVN = N'FG1 ', FILENAME = N'C: DeanDataFG1.ndf', size = 3072KB, TIL FILEGROWTH = 1024KB) FILEGROUP [FG1]

Etableringen av en tilsvarende gruppe på fire papirer og dokumenter og til å lagre data for hver fil på annen diskstasjon.

2.2, oppretter en partisjon funksjon

Lag partisjonstabellen deling av funksjoner må bestemmes mekanismen, er standarden partisjonstabellen partisjon funksjon bestemmes av. Opprette en data partisjon funksjonen har RANGE "VENSTRE | / HØYRE" to alternativer. På vegne av hver av hvilken side av grensen verdien i lokale. Slik som eksistensen av fire partisjoner, så definisjonen av de tre grensen verdi, og angi hver verdi er den første partisjonen på grensen (venstre) eller en ny partisjon av den nedre grense (høyre). Kode:

CREATE FUNCTION partisjon [SendSMSPF] (datetime) AS RANGE HØYRE FOR VERDIER ('20070401 ', '20070701', '20071001 ')

2.3, oppretter en partisjon ordning

Lag partisjon funksjon, må den være knyttet til partisjonering ordningen å partisjonere et dokument som peker til en bestemt gruppe. Er å definere den faktiske lagring av data media og korrespondanse mellom data blokker. Flere datatabell kan dele de samme dataene partisjon funksjon, generelt ikke deler de samme dataene partisjonering ordningen. Av forskjellige partisjonering ordningen, bruker de samme partisjon funksjon, de forskjellige datatabeller har samme geografiske forhold, men lagres i ulike medier. Opprette en partisjon programkode er som følger:

CREATE partisjoneringsopplegget [SendSMSPS] AS partisjon [SendSMSPF] TIL ([FG1], [FG2], [FG3], [FG4])

2.4, opprette en partisjonstabellen

Etableringen av en god partisjon funksjon og deling ordningen, kan du opprette en partisjon tabell. Partisjonstabellen partisjon nøkler og deling ved å definere det tilknyttede programmet. Sett inn posten, SQL SERVER nøkkelen i henhold til annen partisjon, er partisjon funksjon definert av data inn i den riktige partisjonen. Dermed partisjonen funksjonen, deling ordningen og partisjonstabellen ved å kombinere de tre. Koden for å lage partisjonstabellen er som følger:

CREATE TABLE SendSMSLog ([ID] [int] IDENTITET (1,1) NOT NULL, [IDNum] [nvarchar] (50) NULL, [SendContent] [tekst] NULL [SendDate] [datetime] NOT NULL,) ON SendSMSPS ( SendDate)

2.5, vise partisjonstabellen informasjon

System som kjører på en tid eller forrige data i partisjonstabellen, må vi se data som er spesifikke oppbevaringsforhold, det vil si antall poster for hver bydel for å få tilgang til disse postene tilgang i det området og så videre. $ Partition.SendSMSPF vi kan for å se, er koden som følger:

Velg $ partition.SendSMSPF (o.SendDate) AS [partisjon Number], min (o.SendDate) AS [Min SendDate], maks (o.SendDate) AS [Max SendDate], teller (*) AS [rader i partisjon] FRA dbo.SendSMSLog AS oGROUP BY $ partition.SendSMSPF (o.SendDate) ORDER BY [partisjonsnummer]

I gjennomføringen av ovennevnte skript i Query Analyzer, resultatene er vist i figur 1:






Figur 1: partisjonstabellen informasjon

2.6 Vedlikehold divisjon

Vedlikehold av de viktigste design området distriktet for å legge til, redusere, fusjonere og veksle mellom partisjonene. Ved ALTER partisjon FUNCTION alternativet Up, Møtes og ALTER TABLE SLÅ muligheten til å oppnå. SPLIT vil øke mer enn én sone, men MEGRE vil kombinere eller redusere partisjonen, SWITCH veksling mellom logiske partisjoner i gruppen.

3, ytelse sammenligning

Våre data på 26500000, om 4G minneplass okkupert ved å sammenligne resultatene for single-table testmiljø IBM365, CPU Xeon 2.7G * 2, minne, 16G, HDD 136G * 2, systemet plattform for Windows 2003 SP1 + SQL Server 2005 SP1 . Resultatene i tabell 1:

Tabell 1: Ytelse Sammenligning av partisjon og ikke partisjon (enhet: ms)

Test elementet deling er ikke partisjon

11654661466

21 333

32014061546

41714061000

Beskrivelse:

1 i samsvar med den tid en dag registrere tidsbruk henting

2, en enkelt post i tidsbruk

3, i henhold til tid en dag registrere tidsbruk slette

4, antall statistiske tid månedlige posten

Som det framgår av tabell 1, for å operere på partisjonstabellen partisjonstabellen enn ikke raskere, fordi driften av partisjonstabellen med CPU og I / O, parallell drift, for å hente data i data er små, posisjonering kortere tidkrevende data.

4 Konklusjon

Av de massive databehandling har vært en hodepine. Separasjonsteknologi er den første vurdering av alle designere, enten det var eget program 程序 funksjon er å skille data Fang Wen, om å være en fornuftig plan, kan være svært effektive til å løse de store datatabellen av driftseffektiviteten av problemet med lav og høy vedlikeholdskostnader. SQL Server 2005 har den nye partisjonstabellen, kan du partisjonere dataene rimelig, når brukeren tilgang til noen data, SQL Server motoren kan optimalisere den fysiske lagringen av data for å finne den beste gjennomføringen av programmet, noe som ikke nål i en høystakk .