sql >> Databasteknik >  >> RDS >> Oracle

Strategi för att förbättra Oracle DELETE-prestanda

Att radera data är ett jäkla jobb, för databasen. Den måste skapa före-bilder, uppdatera index, skriva om-loggar och ta bort data. Detta är en långsam process. Om du kan ha ett fönster för att utföra den här uppgiften, är det enklaste och snabbaste att bygga nya tabeller som innehåller den önskade informationen. Släpp de gamla tabellerna och byt namn på de nya tabellerna. Detta kräver en del installationsarbete, det är uppenbart men är mycket väl möjligt att göra. Ett steg mindre drastiskt är att släppa indexen innan raderingen sker. Min röst skulle gå till CTAS (Create Table As Select from) och bygga de nya tabellerna. Ett trevligt partitioneringsschema skulle säkert vara till hjälp, kanske i nästa utgåva kan Oracle kombinera intervall- och referenspartitionering. Det skulle vara väldigt trevligt att ha.

Inaktivera loggning .... kan inte göras för borttagningar men CTAS kan använda nologging. Gör en säkerhetskopia när du är klar och se till att överföra datafilerna till standbydatabasen, om du har en.



  1. Hur skriver man preparera och exekvera uttalanden i OOP PDO?

  2. Förhindra dubbletter av SQL-poster

  3. hur designar jag intermittent via-punkter för resplan

  4. mysql_real_escape_string() tar bort strängen helt