Hallo,
warum nutzt Du drei verschiedene Datenbanken? Ist das überhaupt notwendig?
Leider ja.
Datenbank 1: Die ist für die Website, dort sind Profilinfos, Web-Content, etc. gespeichert.
Datenbank 2: Die wird vom verwendeten IRCX-Server genutzt. Der hat seine eigene Anmeldeprozedur und verwendet dafür seine eigenen Tabellen. Auch Infos welcher Benutzer grade sich in welchem Chatraum aufhält usw.
Datenbank 3: Wird vom E-Mail Server genutzt. Der ist komplett SQL-basiert und speichert dort die E-Mail Benutzer, eingegangene Mails, Servereinstellungen, etc. ab.
Den Benutzer hat es jedoch nicht zu interessieren, ob da 3 Server-Anwendungen laufen oder nicht. Wenn sich ein neuer Benutzer registriert, muss er in alle 3 Datenbanken eingetragen werden. Der Benutzer sieht nur: Er hat ein Profil, er kann Chaträume betreten, nach chattenden Benutzern suchen, er hat ein eigenes Postfach, ...
wenn Du schon die Benutzer verwalten darfst, warum gibst Du nicht einem vorhandenen normalen Benutzer Rechte auf die drei verschiedenen Datenbanken?
Es ist definitiv keine gute Idee, für so etwas den root-Account zu verwenden.
Hab ich jetzt gemacht.
Erstellst Du Abfragen, die z.B. einen Join über die verschiedenen Datenbanken enthalten? Oder nutzt Du PHP, um Joins nachzubilden?
Nein, Joins benutze ich (noch) nicht. Beim Login gibt der Benutzer z. B. seine E-Mail Adresse ein. Ich suche dann erstmal in der Tabelle userlogin nach der passenden ID, vergleiche Passwort usw. und wenn alles okay ist, lese ich auch Infos aus den Tabellen userdata, userpictures, usersettings, userguestbook, ... Dann suche ich mit der gleichen ID in der Datenbank ircx und speichere auch dort alles ab, was ich benötige. Das gleiche dann nochmal bei der Datenbank dbmail.
Das ist alles erst nach und nach gewachsen... am Anfang war ein derartiger Funktionsumfang gar nicht geplant, es wurde dann immer mehr und ich habe einfach zusätzliche Abfragen eingebaut.
Würde die Verwendung der MySQLi-Extension noch einen Schub bringen?
Warum sollte es? Was hast Du gemessen?
Naja, ich hatte gelesen man kann damit mehrere Abfragen vorbereiten und mit einer einzigen Verbindung dann abarbeiten lassen. So bräuchte ich zumindest für die Abfragen der Tabellen userlogin, userdata, userpics, usersettings ... nur noch einmal die DB zu kontaktieren.
Was könnte man sonst noch machen?
Das Handbuchkapitel zur Optimierung lesen und die Erkenntnisse gescheit anwenden: http://dev.mysql.com/doc/refman/5.0/en/optimization.html.
Ich denke, erstmal sollte ich mir JOINs zunutze machen...?
Gruß
Sven