Datenbank/Tabellen Sperren für Update?

ca. 30.000-50.000 Updates im Zeitraum von 3 Minuten.

Klar könnte man die zu ändernden Daten filtern. Nur, ich denke es wäre besser das gesamte Paket sturr zu ersetzen.

Und eine Lösung wie Slony, die deine Änderungen weiterschieben könnte, kommt dabei nicht in Betracht?

Theoretisch wäre das durchaus ne Möglichkeit. Das Problem ist eher, dass ich hier ne kleine Leitung (Upstream) zum Server habe (100 KB/sec). Wenn ich das jetzt blind zb. via pgpool auf den server lade, hab im Prinzip ne komplette Auslastung (60-70%).
Dagegen, wenn ich dagegen mit copy’s und packen arbeite muss ich einmalig 500kb hochladen(5sec). Wenn ich das alle 20 Sekunden machen, hab ich zwischen drinn noch etwas Bandbreite für andere Dinge. Soweit hatte ich gedacht :rolleyes:


Aber durchaus ne Möglichkeit ja. Werde mir das mal durch den Kopf gehen lassen. Danke an euch beide für die Super Tipps hier.

Achja, was natürlich auch noch dazu kommt, ist Stabilität. Es kann durchaus sein, dass mal die Verbindung für 24h weg ist. Mit der “manuellen” Lösung, kann man immer zeitnah eine 1zu1 kopie auf den Server spielen ohne Probleme.

Wenn Du mit der Bandbreite ein Problem hast, würde ich mal versuchen, die zu übertragenen Daten zu reduzieren. Du sagtest im Thread, daß nicht immer alles gelöscht und neu eingespielt werden muß, das da auch normal neue Datensätze kommen bzw. welche zu löschen sind. Wenn Du das vorher ausfilterst, hast Du wahrscheinlich weniger zu übertragen. Es gibt da DB-Operationen wie EXCEPT und INTERSECT, die da echt gute Dienste leisten könnten.

Andreas

Und Tools ala table_log, die man für solche Zwecke ge/missbrauchen könnte.
Einfach alle Änderungen loggen und ggf. überspielen, dann alle Daten aus den Logtabellen löschen.

Okay. Ich werde vermutlich aus Zeitgründe, die Implementierung wählen, wie ich sie hier genannt habe.
Später wird es sicherlich sinnvoller sein, auf eine bessere Lösung wie ihr sie genannt habt, umzusteigen.

Mal wieder herzlichen Dank an euch beide. Werde hier dann in den nächsten Tage ein paar Ergebnisse posten, wie sich das System hält.

Gruß

So jetzt muss ich nochmal stören. Slony repliziert im Prinzip eine komplette Datenbank. Kann ich diese auch auf einem remote-rechner ablegen? Ich glaub das funktioniert nämlich nur für lokale Zwecke?


Edit: Hat sich erledigt. funktioniert beides wunderbar.

Slony repliziert genau die Tabellen, auf die du Slony ansetzt.
Und ja, es ist möglich, die Datenbanken auf verschiedenen Servern zu haben - das ist Sinn und Zweck der Sache. Nur wie das mit Netzwerkunterbrechungen aussieht, müsstest du noch testen.

Okay hab Slony hier mal auf dem Test-system laufen. Funktioniert soweit perfekt. Die Geschwindigkeit ist etwas Lam. Nur wenn ich mir mal die Arbeitsweise etwas genauer anschaue, wird jede Anfrage zuerst von postgresql direkt verarbeitet (sogar trigger spezifisch). Wäre eine pgpool implementierung nicht sinnvoller, hier werden doch direkt die TCP/IP pakete weitergeleitet?

PGPool arbeitet “anders”. Da muss vor allem auch deine Applikation mitspielen. Ausserdem wird dir PGPool Probleme bereiten, weil jede Anfrage parallel an alle Rechner geschickt wird - was passiert, wenn einer offline ist?

Damit bremst du sogar deine lokale Datenbank aus, weil auf die Verbindung über die langsame Leitung gewartet werden muss. Slony wiederum erledigt das async und sollte eigentlich auch mehrere Updates zusammenfassen können.

Okay, Slony scheint dann wohl doch die bessere Lösung zu sein. Die Frage ist wohl auch ob mit 100 kb/s Upstream langen für ca. 20.00-30.000 Queries in 3 Minuten.
Das müsste man zwar genau test. aber evt. kann jemand von euch schonmal ne Einschätzung treffen, der evt. in ähnlichen größen garbeitet hat.

Rechnerisch hätte man eher kein Problem.

Dunno, ich habe leider noch nicht soviel mit Slony gearbeitet und wenn, dann nur im LAN. Das wirst du wohl testen müssen …

Jep werd ich. Werd hier dann auch ein paar Ergebnisse posten. Und nochmal besten Dank für die wirklich kompetente Hilfe. :slight_smile:
Gruß

Ich geb jetzt schonmal ein Feedback:

Hab Slony mit sDSL 1024Mbit eingerichtet. Bei 3 Tabellen:

foo_tb_1, ca. 3000 updates/inserts pro 2 mins
foo_tb_2, ca. 3000 inserts pro 2 mins
foo_tb_3, ca. 10.000-20.000 updates pro 2-3 min


Auf den ersten Blick scheint wirklich alles klasse zu laufen. Die Datenbank(Tabellen) online haben ca. ein Delay von max. 10sec (sonst zwischen 2-8sec).
Werd das ganze mal ein paar Tage lang weiter testen.