sql >> Databasteknik >  >> RDS >> Mysql

1 mycket stort bord eller 3 stora bord? MySQL-prestanda

Det här är faktiskt en diskussion om Singe - Tabell - Arv vs. Tabell Per Klass Arv och att missa sammanlagt arv. Den förra är relaterad till metod A, den andra till din metod B och metod C skulle vara att ha alla ID för dina inlägg i en tabell och skjuta upp specifika attribut för grupp eller användare - inlägg till olika tabeller. Samtidigt som du alltid har en stor tabell har sina negativa effekter relaterade till tabellfulla skanningar har metoden att dela tabeller sin egen också. Det beror på hur ofta din applikation behöver komma åt hela listan med inlägg kontra att bara hämta vissa inläggstyper. En annan faktor som du bör ta hänsyn till är datapartitionering som kan göras med MySQL eller Oracle Database t.ex. vilket är ett sätt att organisera dina data i tabeller med möjligheter till informationslivscykel (vilka data som nås när och hur ofta, kan en del av den flyttas och komprimeras vilket minskar databasstorleken och ökar hastigheten för åtkomst till den vänstra delen av datan i tabell), som i princip är uppdelad i tre huvudtekniker:intervallbaserad partitionering, listbaserad partitionering och hashbaserad partitionering. Andra funktioner som inte är så vanligt stödda relaterade till att minska tabellstorlekar är de som hanterar infogning med tidsstämpel som automatiskt ogiltigförklarar infogade data efter en viss tidsperiod har löpt ut. Det som verkligen är ett stort applikationsdesignbeslut och som kan öka prestandan är att skilja mellan läs- och skrivåtkomster till databasen på applikationsnivå. Överväg en MySQL - Backend:Eftersom skrivåtkomster uppenbarligen är mer kritiska för databasprestanda så får du läsåtkomster kan ställa in en MySQL - instans för att skriva till databasen och en annan som replikant o Detta för läsåtkomsterna, även om detta också kan diskuteras, främst när det gäller RDT (realtidsbeslut), där absolut konsistens av data vid varje given tidpunkt är ett måste. Att använda objektpooler som ett lager mellan din applikation och databasen också är en teknik för att förbättra applikationsprestanda även om jag inte känner till befintliga lösningar i PHP-världen än. Oracle Hot Cache är ett ganska sofistikerat exempel på det. Du kan bygga din egen implementerad ovanpå en minnesdatabas eller använda memcache.




  1. Uppdaterar flera rader i en tabell

  2. De bästa svaren på 5 brännande frågor om COALESCE-funktionen i SQL Server

  3. MySQL 5.6 skapa vy med unicode-teckenuppsättning

  4. Hur återställs när ett fel uppstår när SQL loader-kommandot körs?