Zum Forum springen
Performance-Verbess...
 
Benachrichtigungen
Alles löschen

[Geschlossen] Performance-Verbessungstool (für PT2/PT3/HM)

169 Beiträge
69 Benutzer
0 Reactions
22.8 K Ansichten
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

Performance-Verbessungstool (für PT2/PT3/HM)

Hallo,

Ich hab mal ein kleines Programm geschrieben, welches PostgreSQL-Datenbanken defragmentieren (und vorher Backups davon erzeugen) kann.
Dabei werden die Datensätze in den Datenbanken effizienter angeordnet, so dass die Zugriffszeiten beträchtlich reduziert werden können.

Die Grundlagen dazu findet ihr hier: http://pokertracker.com/forum/viewtopic.php?t=15545
Das ganze wurde auch schon an einigen Stellen hier im Forum diskutiert.

Was das Prog macht:

Im Prinzip nicht anderes als die Befehle die in dem Thread stehen an die Kommandzeile übergeben. Der Vorteil ist zum einen dass man sich die ganze Tipparbeit spart und zum anderen dass alle Datenbanken nacheinander automatisch defragmentiert ("geclustert") werden können.

Wenn ihr das Prog zum ersten Mal startet werdet ihr danach gefragt in welchem Ordner PostgreSQL installiert ist und welche Datenbanken ihr habt etc. Diese Eingaben speichert dass Prog in einer .ini Datei so dass ihr das alles nur beim ersten Start angeben müsst.

Wichtig: Ihr müsst die PostgreSQL-Datenbanknamen eingeben! Die findet ihr in PT unter File --> Maintain Database Names... in der rechten Spalte.

Feedback und Meldungen über Bugs bitte hier im Thread.

Hier nun die Download-Links:

DOWNLOAD (nur für PT2!)

Source-Code in Python (hoffentlich bald auch für PT3/HM)

Viel Spass damit!

PS: Diejenigen unter euch die bei der Ausführung des Progs nach einem Passwort gefragt werden sollen sich die readme.txt mal durchlesen.

Changelog:

>>> Update (Version 0.4b) <<<

Es gab in seltenen Fällen Stabilitätsprobleme. Ich hoffe das die mit diesem Update behoben sind.

>>> Update (Version 0.4) <<<

Hier die wichtigsten Neuerung im Überblick:

  • Das Programm clustert jetzt auch Turnier- und SnG-Datensätze.
  • Es kann ein default-Pfad für die .backup-Dateien festgelegt werden.
  • Das Programm kommt jetzt auch mit anderen Ports/Hosts/Usernames klar. Die Werte 5432/localhost/postgres sind als Stardardwerte implementiert.
  • Es wird jetzt überprüft ob der Programmpfad korrekt abgegeben ist und ob die DBs die in der .ini stehen auch existieren.

168 Antworten

Danke!
Solltest aber evtl. noch Prüfungen für Falscheingaben einbauen...


swizz
Beigetreten: 02.03.2006
Oldschool Grinder

Herzlichen Dank, dass ist ja mal richtig geil.

Gruss Malte


Danke für die Mühe !! Echt toll gemacht =)


Hi, schönes Programm!

Aber bei mir wurde nur die erste DB gebackupped.


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

Original von duudel
Aber bei mir wurde nur die erste DB gebackupped.

Hast du die anderen DBs richtig geschrieben? Groß- und Kleinschreibung ist hier wichtig.
Werden die Größen aller DBs angezeigt?
Werden alle DBs defragmentiert?
In welchem Modus hattest du das Prog laufen ("backup only" oder "backup and defrag")?
Hast du irgendwelche Fehlermeldungen bekommen?
Hast du Sonderzeichen (außer Leerzeichen) im Datenbanknamen?
edit: Schrägstriche in DB-Namen könnten ein Problem sein (nur bzgl. des Backups).

Wäre hilfreich wenn du mir die Fragen kurz beantworten könntest. Ich hatte das Problem auf meinem Rechenr noch nicht.


Jau, der Schrägstrich ist schuld =)


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

OK, ist gefixt. Windows mag natürlich keine Schrägstriche im Dateinamen. Jetzt werden alle Schrägstriche usw. durch _ ersetzt.

Danke duudel für den Hinweis!


Ich habe zu danken! =)


swizz
Beigetreten: 02.03.2006
Oldschool Grinder

Wenn man das regelmäßig macht und die Backups immer im gleichen ORdner abgelegt werden, überschreibt er die älteren Backups dann einfach mit den neuen?


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

Original von maltechristian
Wenn man das regelmäßig macht und die Backups immer im gleichen ORdner abgelegt werden, überschreibt er die älteren Backups dann einfach mit den neuen?

Ja.


schrisos
Beigetreten: 23.03.2005
PokerStrategist

hi hugh,

dein programm ist sicher spitze, hab aber ein grosses problem: mein port ist nicht 5432 sondern 5433, mit der postrgresql 8.2. damit kann sich das programm leider nicht verbinden mit der database, da es ja den port 5432 braucht.

kannst du das vielleicht irgendwie auch für diese einstellungen hinbiegen? oder geht das nur über den 5432er?

herzliche grüsse


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

hi schrisos,
das Prog funzt momentan nur über port 5432, das ist richtig. Ich hab auch schon daran gedacht das zu ändern, damit die Portnummer dann auch in der PTdefrag.ini gesavt wird. Leider hab ich momentan wenig Zeit, es kann sich also noch ne Weile hinziehen bis ich das eingebaut hab, aber es steht auf meiner ToDo-Liste.
Vorübergehend kann ich dir fuzzles Batch empfehlen: Batch : Poktertracker Verschnellern
Da musst du halt von Hand die Portnummer in den Befehlen ändern.

Gruß
Hugh


swizz
Beigetreten: 02.03.2006
Oldschool Grinder

Sauber Hugh,

dein Program ist wircklich eins von dem ich schon lange geräumt habe. Ganz großer Sport.

Gruß Malte


schrisos
Beigetreten: 23.03.2005
PokerStrategist

Original von HughJazz82
hi schrisos,
das Prog funzt momentan nur über port 5432, das ist richtig. Ich hab auch schon daran gedacht das zu ändern, damit die Portnummer dann auch in der PTdefrag.ini gesavt wird. Leider hab ich momentan wenig Zeit, es kann sich also noch ne Weile hinziehen bis ich das eingebaut hab, aber es steht auf meiner ToDo-Liste.
Vorübergehend kann ich dir fuzzles Batch empfehlen: Batch : Poktertracker Verschnellern
Da musst du halt von Hand die Portnummer in den Befehlen ändern.

Gruß
Hugh

hi hugh, auch für andere mit dem gleichen port problem, eine anleitung wie man die ports ändert, funkt supi. somit brauchst auch dein programm nicht umschreiben...lg

Instructions for swapping PostgreSQL ports after an upgrade from 8.0 to 8.2.x.
(Note: You must have already converted your 8.0 postgreSQL databases to 8.2.x using the instructions here: http://www.pokertracker.com/forum/viewtopic.php?t=17936 )

1) Open PT and go to File -> Maintain Database Names.
2) Click the Add button.
3) Type in a name (like Bogus), since this is only a temporary DB to allow us to change the PGSQL ports & settings.
4) Click the Dflt checkbox (this means PT will open this database by default the next time we start PT).
5) Click the DB File/DB Name/DSN field and select Browse To Find Existing Access Database...
6) Locate the ptrack.mdb file on your system (usually C:\Program Files\Poker Tracker V2\ptrack.mdb).
7) Click the OK button.
8) Then go to File -> Open A Database...
9) Select your newly added Bogus database and click OK.
10) Now go to File -> Close A Database...
11) Select any database listed, other than Bogus, and click OK.
12) Repeat step 11 until all databases are closed except Bogus. PT will give you an error message when you have only one database open (which will of course be Bogus).

This now has PT using the default database Bogus, which will allow us to change the PostgreSQL settings in PT after we change the ports in PostgreSQL.

EDIT: Now we need to remove all the old database references from the PT configuration.

To remove all old PostgreSQL refereances:

1) Go to File -> Maintain Database Names.
2) Select each database (other than the Bogus database) and click remove.
3) Repeat this until the only database left is the Bogus database. This gives us a clean slate to work from.

Now we're going to change the PostgreSQL ports. For this example, we want the old PostgreSQL 8.0 running under port 5433 and the new PostgreSQL 8.2.x running under port 5432.

To shut down the PostgreSQL services ...
1) Right click on My Computer and select Manage.
2) Then in the Computer Management window, select Services and Applications.
3) Then select Services.
4) Scroll down until you see PostgreSQL Database Server 8.0 & PostgreSQL Database Server 8.2.
5) Double-click each one and click on the Stop button.
6) Then minimize this window (you'll use it again in a minute to re-start each service).

It's easier to edit the ports using the postgresql.conf files and notepad, rather than pgAdmin (IMHO).

To change the PostgreSQL ports ...
1) Find the PostgreSQL 8.0 postgresql.conf file (it should be in or around C:\Program Files\PostgreSQL\8.0\Data) and open it with Notepad.
2) Find the line that begins with "port =".
3) Change the port to 5433.
4) Close Notepad and save the file.
5) Find the PostgreSQL 8.2.x postgresql.conf file (it should be in or around C:\Program Files\PostgreSQL\8.2\Data) and open it with Notepad.
6) Find the line that begins with "port =".
7) Change the port to 5432.
8) Close Notepad and save the file.
9) Now go back to the Services window (the one you minimized) and start each service (double-click each one then click the Start button).

PostgreSQL 8.0 should now be running on port 5433 and PostgreSQL 8.2.x should now be running on port 5432.

Now we're going to change your PostgreSQL settings in PT.

1) Open PT. Since we've already changed the default database, PT will open with the Bogus database.
2) Go to Utilities -> PostgreSQL Settings.
3) Since these are your old settings, let's delete them. Click on each setting, then click Remove. Repeat until all settings are gone.
4) Now click on Add.
5) Since we intend to remove PostgreSQL 8.0, only add the settings for 8.2.x. Select the port field and enter 5432.
6) Enter localhost as the Server.
7) Enter your Username and Password.
8) Under ODBC Entry To Use, select PostgreSQL Unicode.
9) Under Encoding, make sure it says UNICODE.
10) Click OK.

Now PT will use your PostgreSQL 8.2.x with port 5432.

Last step ..
1) Go to File -> Maintain Database Names.
2) Click the Add button.
3) Enter the descriptive name to use for your primary (default) PostgreSQL 8.2.x database. This is not the filename, it's just a descriptive name for you to quickly identify your database.
4) Click the Dflt checkbox (this makes this database your default database).
5) Click the DB File/DB Name/DSN field and select Select An Existing PostgreSQL Database... If we've done everything correct, this will bring up a dialog box displaying your PostgreSQL 8.2.x databases.
6) Select your new default database and click OK. You will notice that the Type field now says PostgreSQL and the Port # field should say 5432.
7) Repeat steps 2, 3, 5 and 6 for each PostgreSQL 8.2.x database you want PT to be able to access.
8) After you have added all the PostgreSQL databases, click OK.
9) Then go to File -> Open A Database...
10) Select your new default PostgreSQL database and click OK.
11) Now go to File -> Close A Database...
12) Select the old Bogus database, and click OK.
13) Finally go to File -> Maintain Database Names.
14) Select the old Bogus database and click Remove. Then click OK.

You're done.

Now after you have done this, you may need to check all your Auto-Import windows to make sure the hand histories are being imported into the correct database. And if the site allows you to specify a separate database for Observed hands (like FTP), you will need to check that also.

You may also need to check your settings in PAHud. And if you are using PAHud caching, you will most likely need to re-build the cache from scratch. For instructions on how to do that, please see the PAHud Forums.

If I've omitted a step or screwed something up (it's a long post), let me know and I will edit this post accrdingly.


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

*Update*
Version 0.4 ist jetzt fertig. Die wichtigsten Änderungen hab ich im Ausgangspost aufgelistet.

Have Fun!


fraleb
Beigetreten: 11.02.2006
Oldschool Grinder

danke erstmal,
ich muß allerdings jedesmal ca. 5-10mal mein passwort eingeben bevor es los geht mit defragmentieren.
passwort:
cluster
passwort:
cluster
passwort:
cluster
passwort:
cluster
passwort:
cluster
passwort:
cluster
sprich, ich gebe mein passwort ein,danach erscheint cluster und ein neuer hinweiß mein passwort einzugeben.
das geht dann eben ne ganze zeitlang so weiter


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

Original von fraleb
danke erstmal,
ich muß allerdings jedesmal ca. 5-10mal mein passwort eingeben bevor es los geht mit defragmentieren.

Hast du das gemacht was in der readme.txt steht? Dann sollte eigentlich keine Password-Abfrage kommen.


swizz
Beigetreten: 02.03.2006
Oldschool Grinder

Macht dein Programm nur eine Clusterung oder auch eine Defragmentierung?
Ich habe nämlich gestern alle DB's geclustert und gebackupt und heute sagt mir PT, dass ich lange keine Defragmentierung mehr gemacht habe.
Muss ich das dann immer noch manuell über PT machen?


HughJazz82 Themenstarter
HughJazz82
Beigetreten: 21.04.2006
Elite Grinder

Original von maltechristian
Macht dein Programm nur eine Clusterung oder auch eine Defragmentierung?
Ich habe nämlich gestern alle DB's geclustert und gebackupt und heute sagt mir PT, dass ich lange keine Defragmentierung mehr gemacht habe.
Muss ich das dann immer noch manuell über PT machen?

Mein Prog clustert die Daten und führt anschließend ein vacuum/analyse durch. Clustern und defragen ist im Prinzip ja das gleiche.
PT errinnert dich alle 7 Tage (oder so) mal wieder ein vacuum/analyse durchzuführen. Das brauchst du aber natürlich nicht zu machen wenn du gerade erst mein Prog drüberlaufen lassen hast. Das Problem ist das PT es nicht merkt wenn andere Programme die Datenbanken vacuum/analysen.
Du kannst die Meldung in PT aber folgendermaßen abschalten:
Start->Ausführen->"regedit" eingeben
Dann suchst du folgenden Eintrag: HKEY_LOCAL_MACHINE\Software\PTrack\DBCompact
In diesem Eintrag ist das Datum gespeichert an dem du zuletzt über PT ein vacuum/analyse durchgeführt hast. Wenn du jetzt die Meldung in PT deaktivieren willst dann änderst du diesen Wert z.B. auf 01/01/2010.


Teilen: