sql >> Databasteknik >  >> RDS >> Sqlserver

Hur ökar man prestandan för en databas?

Optimera den logiska designen

Den logiska nivån handlar om strukturen för frågan och själva tabellerna. Försök att maximera detta först. Målet är att få tillgång till så lite data som möjligt på den logiska nivån.

  • Ha de mest effektiva SQL-frågorna
  • Designa ett logiskt schema som stödjer programmets behov (t.ex. typ av kolumner, etc.)
  • Design avvägning för att stödja vissa användningsfall bättre än andra
  • Relationella begränsningar
  • Normalisering

Optimera den fysiska designen

Den fysiska nivån handlar om icke-logiska överväganden, såsom typ av index, parametrar för tabellerna, etc. Målet är att optimera IO som alltid är flaskhalsen. Ställ in varje bord för att passa det behov. Liten tabell kan laddas permanent inläst i DBMS-cachen, tabell med låg skrivhastighet kan ha andra inställningar än tabell med hög uppdateringshastighet för att ta mindre diskutrymme etc. Beroende på frågorna kan olika index användas etc. Du kan denormaliserade data transparent med materialiserade vyer, etc.

  • Tabellparametrar (tilldelningsstorlek, etc.)
  • Index (kombinerade, typer, etc.)
  • Systemomfattande parametrar (cachestorlek, etc.)
  • Partitionering
  • Denormalisering

Försök först att förbättra den logiska designen, sedan den fysiska designen. (Gränsen mellan båda är dock vag, så vi kan argumentera om min kategorisering).

Optimera underhållet

Databasen måste drivas korrekt för att vara så effektiv som möjligt. Detta inkluderar några underhållsåtgärder som kan påverka prestandan, t.ex.

  • Håll statistiken uppdaterad
  • Sekvensera om kritiska tabeller med jämna mellanrum
  • Diskunderhåll
  • Alla systemgrejer för att ha en server som gungar


  1. Tinyint vs Bit?

  2. Hur man infogar pdf och video separat med olika tabellfält i php

  3. Hur löser jag en mysql Thread Stack Overrun?

  4. få id för senast infogade post utan att använda mysql_insert_id()