Avatar billede ramad Praktikant
07. februar 2007 - 08:37 Der er 3 kommentarer

Performance ved join

Jeg oplever et problem ved processering af partitioner på en kube. Partitionerne er delt op på år, altså 2005, 2006 og 2007. Jeg oplever at et join for 2006 patitionen tager ca. 1 time ved læsning af ca. 9 mill rækker, mens join af 2007 partitionen tager over 9 timer ved læsning af ca 500.000 rækker. Begge partitioner læser på de samme dimensioner, og hvis jeg lægger data fra 2007 partitionen over i 2006 partitionen, bliver 2006 partitionen ikke tilsvarende langsom??? Nogen gode idéer?
Avatar billede lorentsnv Nybegynder
07. februar 2007 - 09:34 #1
Hvis du partitionerer tabeller på SQL Server 2000, skal du bruge CHECK constraint på tabellerne, for at SQL Server skal vide hvilke tabeller den skal bruge.
Eks:

ALTER TABLE [dbo].[F_OmkostningerHistory_13648]
ADD CONSTRAINT [CK_F_OmkostningerHistory_13648]
CHECK ([DWID_WeekNoHistory] = 13648)

Jeg har ikke checket op om dette er anderledes i SQL Server 2005. Jeg vil antage at du fortsat kan bruge CHECK constraint, men jeg er usikker på om der måske findes en Wizard i 2005 til at lave partitionering?

Med check constraint, skal du give et unikt interval for hver partition, i dit tilfælde vil det vel være på en dato, feks:


ALTER TABLE [dbo].[F_Omkostninger_2006]
ADD CONSTRAINT [CK_F_Omkostninger_2006]
CHECK ([Dato] >= '20060101' and [Dato] < '20070101')

Hvis du så laver et UNION view over alle dine partitioner, og filtrerer på dato-feltet, vil SQL Server selv finde ud af hvilken partition den skal sende forespørgselen til.

Hvis du bruger SQL Server 2000, kan du finde mere informationer om partitionering på:
http://msdn2.microsoft.com/en-us/library/aa902650(SQL.80).aspx

Hvis du bruger SQL Server 2005, kan du finde mere informaitoner om paritionering på:
http://msdn2.microsoft.com/en-us/library/ms345146.aspx
Avatar billede lorentsnv Nybegynder
07. februar 2007 - 09:35 #2
Har du samme indexer på dine partitioner? Din beskrivelse af at tabellen for 2006 data er hurtiger, tyder på at du mangler nogle indexer på 2007 partitionen.
Avatar billede janus_007 Nybegynder
25. februar 2007 - 18:31 #3
Hold da fast... sikke nogle svartider.

Ligger de på samme filegroups?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester