sql >> Database >  >> RDS >> PostgreSQL

Dataframe schrijven naar Postgresql slechte prestaties

Zelf Q 1 beantwoorden:Het lijkt erop dat het probleem meer te maken had met Postgresql (of liever Databases in het algemeen). Rekening houdend met de punten in dit artikel:https://use-the- index-luke.com/sql/dml/insert Ik heb het volgende gevonden:

1) Het verwijderen van alle indexen uit de doeltabel resulteerde in het uitvoeren van de query in 9 seconden. Het opnieuw opbouwen van de indexen (in postgresql) duurde nog 12 seconden, dus nog steeds ruim onder de andere tijden.

2) Met alleen een primaire sleutel op zijn plaats, verminderde het invoegen van rijen op volgorde van de primaire sleutelkolommen de tijd die nodig was tot ongeveer een derde. Dit is logisch omdat er weinig of geen shuffling van de indexrijen nodig is. Ik heb ook geverifieerd dat dit de reden is waarom mijn cartesiaanse join in postgresql in de eerste plaats sneller was (dwz de rijen werden puur toevallig door de index geordend), dezelfde rijen in een tijdelijke tabel plaatsen (ongeordend) en van daaruit invoegen duurde eigenlijk veel langer.

3) Ik probeerde soortgelijke experimenten op onze mysql-systemen en vond dezelfde toename in invoegsnelheid bij het verwijderen van indexen. Met mysql leek het er echter op dat het opnieuw opbouwen van de opgebruikte indexen tijdwinst zou opleveren.

Ik hoop dat dit iemand anders helpt die deze vraag tegenkomt tijdens een zoekopdracht.

Ik vraag me nog steeds af of het mogelijk is om de stap schrijven naar csv in python (Q2 hierboven) te verwijderen, omdat ik denk dat ik dan iets in python zou kunnen schrijven dat sneller zou zijn dan pure postgresql.

Bedankt, Giles




  1. Kun je automatisch een mysqldump-bestand maken dat geen beperkingen oplegt aan externe sleutels?

  2. Hoe controleer ik of de MySQL-query geldig is zonder deze uit te voeren?

  3. Varchar naar nummerconversie voor sorteren

  4. Hoe te verwijderen uit een tabel zonder een beperking te hoeven laten vallen