Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Index tuning wizard - få ut det bästa resultatet

Postad 2002-09-13 av Susanne Hayat i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 3402, Betyg: 100%

Förord

The Index Tuning Wizard är ett mycket användbart verktyg som kan analysera SQL-satser och föreslå ändringar som kan både höja och förbättra funktionerna av dem, och som följer med i SQL Server 7.0 och SQL Server 2000 Profiler. I denna artikel tänker jag visa på hur du kan få ut det allra bästa av att använda The Index Tuning Wizard.
Innehåll
  » Hur Guiden fungerar
  » Hur du skapar din sökfil
  » Att köra Index Tuning Wizard
  » Hur du behandlar resultaten
  » Tips och tricks
  » En sista tankeställare


Hur Guiden fungerar

Det första du gör är att du pekar ut en kopia av den databas som du vill analysera, till din Index Tuning Wizard. Sedan ”matar” du Guiden med en sökfil (vilket är en samling SQL-satser som du använder mot databasen i fråga) för att sedan lämna Guiden till att arbeta. Det den gör är att den går igenom satserna och funderar ut om ändringar i satserna skulle förbättra deras prestanda.


Hur du skapar din sökfil

Om du håller på att skapa en ny databas så kan det vara svårt att gissa sig till vilka de ”representativa” kommandona är, och om SQL-satserna utvecklas fritt av webbklienter t ex, så kan det finnas ett oräkneligt antal variationer av SQL-satser som går att köras. Om så är fallet så är det bara att gissa sig till vad din sökfil ska bestå av. Ett sätt att göra detta på är att skapa anrop med ”representativa” parametrar till dessa sparade procedurer.

Som det ser ut i verkligheten så är det inga problem med att skapa en sökfil eftersom SQL Server Profilers sökfunktion gör detta åt dig. Bara peka ut en databas som används för Profilern, så spelar den in de SQL-satser som körs. Glöm bara inte att peka ut databasens ID i filtersektionen (du kan få tag på den aktuella databasens ID genom att köra ”SELECT DB_ID()”) för att inte få med SQL-satser från andra databaser. Du kan också klippa ut all ”Connection” info för att hålla sökfilen så liten som möjligt.


Att köra Index Tuning Wizard

Jag föredrar att minimera lasten på SQL Servern genom att köra Profiler och spara resultaten som en *.trc-fil på en annan maskin än min SQL Server. Det är särskilt viktigt att göra det i en aktiv miljö, eftersom du vill hålla lasten nere så mycket som möjligt på en aktiv Server.

När jag väl har skapat min sökfil så måste jag köra Index Tuning Wizard mot databasen i fråga. För att återigen minska lasten på Servern, så kör jag helst på en utbildningsmaskin där jag har den senaste kopian på vilken aktiv databas som helst som jag har kört sökfilen mot. The Index Tuning Wizard arbetar enligt ett ”logiskt I/O” underlag – som inte är beroende utav maskinen – så det spelar ingen roll om maskinen du arbetar på har samma hårdvara som de aktiva miljömaskinerna.

The Index Tuning Wizard kommer att föreslå ett antal Index åt dig, vilka redan kommer att finnas på plats, och den kommer att generera ett skript som kommer att skapa nya Index åt dig, vilka du bör spara på disken till senare bruk. Om du vill så kan du välja att din Wizard skapar nya Index åt dig med en gång, eller så kan du schemalägga det arbetet till en lugnare tidpunkt.


Hur du behandlar resultaten

Bland många andra saker så kommer din Wizard att lägga fram en ”Topp-100-lista” av de SQL-satser som den tror kommer att dra mest fördel av att du gjort de ändringar den föreslagit. Den låter dig sedan spara denna Topp 100 listan som en SQL-fil, vilket jag rekommenderar att du verkligen gör, för de kan komma till användning senare.

Wizarden kommer sedan att fråga om den ska lägga in det nya Indexet med en gång. Jag brukar vanligtvis svara ”Ja” på denna fråga, eftersom jag brukar köra Index Tuning Wizard mot en kopia av en databas som ändå är under utveckling. När den har lagt in de nya satserna kan jag nu jämföra den ”nya” databasen (med de nyligen inlagda Indexen) mot den ”gamla” aktiva databasen (eller en annan kopia av den).

Det är nu de ”mest förbättrade” SQL-satserna som vi sparade förut är bra att ha. Antingen jämför jag de nya SQL-satserna med SQL-satserna som finns i varje kopia av databasen, eller så kör jag de nya satserna för att se om jag märker någon förbättrad tidsskillnad. Det är kanske onödigt att påpeka att du inte bör testa de nya satserna på den aktiva databasen.

När jag väl har försäkrat mig om att min Index Tuning Wizards rekommendationer är värda att spara, så jag kan implementera de nya satserna till en aktiv miljö. Men var inte alltid så säker på att rekommendationerna alltid är bättre. Jag förklarar närmare sen.




Tips och tricks

Det kan vara frestande att fylla din sökfil med så mycket data som möjligt för att göra dina tester mer ”representativa”, men jag föreslår att du inte gör det på grund av följande:


  • Guiden kommer bara att behandla upp till 32 000 olika satser ändå.

  • Du kommer att få många satser som är väldigt lika, och dem kan komma att fylla upp hela den Topp 100 listan av förbättrade satser som Guiden ger dig. Om du använder en mindre mängd data så får du en bättre distribuerad och finfördelad lista på olika förbättrade satser, och därmed kan du dubbelkolla fler av Guidens rekommendationer.

  • Om du däremot skulle ha en stor sökfil så kan du ange ett mer hanterbart antal satser som Guiden ska kolla igenom genom att ändra vissa inställningar under ”Advanced” knappen.

  • Om du sedan verkligen vill kolla igenom en stor mängd data så föreslår jag att du delar upp dem i mindre bitar, och kollar igenom de sammanlagda resultaten.


Kom ihåg att ett nytt index kan snabba på en del operationer, men de kan också sakta ner vissa andra, som t ex INSERT, UPDATE eller DELETE (eftersom de nya Indexen också måste uppdateras). Det här är någonting som du måste fundera över innan du applicerar något nytt Index. Om din Index Tuning Wizard säger att du bör använda den nya satsen för att öka hastigheten till att få ut stora mängder data, fastän du bara använder INSERT i den tabellen, så bör du kanske inte lägga in den nya Indexen trots allt.

Kom också ihåg att användningsprofilen av databasen kan ändras över hela dagen. Det kan vara så att du lägger in data under dagarna och skapar en batchrapport på kvällarna. Många Index föredrar att du samlar in batchrapporter hellre än att du samlar in data, men jag föreslår att du håller transaktionsnivån nere medan du samlar in data. Under dagen sitter användarna och väntar på att någonting ska hända i tillfredsställande takt, medan du har hela kvällen och natten på dig till att göra dina rapporter.

The Index Tuning Wizard har som standard att godkänna Index som kan ha upp till 16 kolumner. Men man brukar generellt sett rekommendera att Indexer ska vara så täta som möjligt, och jag brukar ändra sådana inställningar under ”Advanced” knappen.

Om Index Tuning Wizard föreslår ett Index som bara skalar av en liten del av tiden för en SQL-sats som redan verkar gå relativt snabbt så bör du inte avfärda den det första du gör. För även om det är en så liten skillnad så att du inte märker den direkt så kan du komma att märka den sammanlagda reducerade tiden då många användare har använt sig utav den, och det kan vara värt det.


En sista tankeställare

Bara för att ett Index kan förbättra någonting så är det inte säkert att det är just avsaknaden av ett Index som gör att det krånglar. Det kan vara själva SQL-satsen som behöver ändras på, eller databasens struktur som inte är så effektiv som den kan vara. Jag har alltid funderat på om The Index Tuning Wizard har avslöjat en mer fundamental miss än en avsaknad index. Tänk på det nästa gång.
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 614
27 953
271 709
376
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies