sql >> Databasteknik >  >> RDS >> PostgreSQL

Dataramskrivning till Postgresql dålig prestanda

Jag svarade själv på fråga 1:Det verkar som om problemet hade mer att göra med Postgresql (eller snarare databaser i allmänhet). Med hänsyn till punkter i den här artikeln:https://use-the- index-luke.com/sql/dml/insert Jag hittade följande:

1) Att ta bort alla index från destinationstabellen resulterade i att frågan kördes på 9 sekunder. Att bygga om indexen (i postgresql) tog ytterligare 12 sekunder, så fortfarande långt under de andra gångerna.

2) Med endast en primärnyckel på plats minskade tiden det tog till ungefär en tredjedel genom att infoga rader ordnade efter kolumnerna för primärnyckeln. Detta är meningsfullt eftersom det bör krävas liten eller ingen blandning av indexraderna. Jag verifierade också att detta är anledningen till att min kartesiska koppling i postgresql var snabbare från början (dvs. raderna ordnades efter index, rent av en slump), placerade samma rader i en temporär tabell (oordnad) och infogade från den tog faktiskt mycket längre tid.

3) Jag provade liknande experiment på våra mysql-system och hittade samma ökning av insättningshastigheten när jag tog bort index. Med mysql verkade det dock som att återuppbyggnaden av indexen förbrukades när som helst.

Jag hoppas att detta hjälper någon annan som stöter på den här frågan från en sökning.

Jag undrar fortfarande om det är möjligt att ta bort skriv till csv-steget i python (Q2 ovan) eftersom jag tror att jag då skulle kunna skriva något i python som skulle vara snabbare än ren postgresql.

Tack, Giles




  1. SQL - Hur man väljer en rad med en kolumn med maxvärde

  2. dataanalys från en fil till java och sedan till en mysql-databas

  3. Sortera data (ordning efter) före grupp efter i mysql

  4. Skapa dynamiskt kolumner sql