
Zitat von
Art Vandelay
Das Umbenennen der Tabelle wär genauso möglich, aber es ist sogar für mich einfacher, einfach den Tabellennamen des JOINS in der Suchabfrage mal auf fulltext1 oder fulltext2 zu wechseln. Das funktioniert schon und ich seh jetzt keinen Vorteil vom Umbenennen.
Wenn es im Code für Dich kein Problem ist dann hat die Lösung natürlich keinen echten Vorteil.
(Ich bin mir auch nicht sicher, ob ein Umbenennen der Tabelle tatsächlich transaktionsfähig durchführbar ist
Ja ist es. Alle Befehle bei Postgres (mit ein paar wenigen Ausnahmen wie CREATE/DROP DATABASE) sind transaktional.
weil eigentlich hört sich das schon stark nach DCL und nicht nach DML an.
DCL? Digital Command Language? Ich denke Du meinst DDL.
Ob da also nicht sogar im Gegenteil irgendein Lock-Table notwendig ist?
Ja, ein Lock ist notwendig so wie bei jedem Update. Aber das rename wartet einfach bis alle Zugriffe auf die Tabelle beendet sind. Wenn die Tabelle natürlich ständig abgefragt wird, dann ist die Lösung mit zwei Tabellen vermutlich einfacher - vor allem wenn es im Code keine Probleme macht.
Die Probleme treten auch nur bei Massen-Updates auf.
Ich würde bei den checkpoint/WAL Einstellungen anfangen. Vermutlich musst Du auch die VACUUM Einstellungen für die beiden Tabellen anpassen.
Noch eine Frage: die INSERTs laufen schon alle in einer Transaktion, oder? Bei Massen-Updates auf keinen Fall mit auto-commit arbeiten!
A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'
Lesezeichen