sql >> Databasteknik >  >> RDS >> Mysql

När ska man använda vilken mysql-partitioneringsmodell

Det beror exakt på vilken typ av prestandaproblem du har.

MySQL 5.1:s partitionering låter dig bara partitionera den första biten av primärnyckeln. Det betyder att om du vill använda någon användbar form av partitionering är det ofta önskvärt att ha en sammansatt primärnyckel.

Ett av de vanligaste användningsfallen är att gamla data förfaller, vilket kan vara mycket dyrt i icke-partitionerade fall. I så fall måste du få primärnyckeln att börja med ett datum/tid och en partition på den.

Sedan kan du förfalla rader genom att programmässigt ta bort gamla partitioner.

Andra fall är där dina vanliga frågor kan dra nytta av partitionsbeskärning.

Kom ihåg att du inte kan fixa alla prestandaproblem med partitionering; det är inte magi. För frågor som inte drar nytta av partitionsbeskärning måste varje partition frågas. MySQL gör inte detta parallellt, så det är vanligtvis lika långsamt som att använda en icke-paritionerad tabell.

  1. Identifiera exakt vad dina prestandaproblem är
  2. Bestämma hur mycket förbättring som skulle räcka för att åtgärda dem
  3. Bestämma hur mycket prestandaregression du kan tolerera i andra användningsfall
  4. Testa, testa, testa och testa igen på dina produktionsstorleksdata på produktionsklassad hårdvara på olika olika inställningar
  5. Upprepa tills du är nöjd.
  6. Utför relevant funktionstestning; släpp!


  1. Frågehastighet baserat på kolumnernas ordning

  2. SQL:Vad är bättre en bit eller en char(1)

  3. Var ska jag lagra en databasanslutningssträng?

  4. InnoDB mySQL kan inte ställa in ON DELETE SET DEFAULT'. Hur ställer man in?