schnelle MySQL verbindung

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Warok
User
Beiträge: 5
Registriert: Dienstag 13. März 2007, 05:06

hi,

ich bin gerade an einer homepage dran und realisiere sie mit mod_python. ich muss allerdings bei fast jeder seite mysql query benutzen. libs wie SQLAlchemy sehen sehr attraktiv aus, allerdings brauche ich eine performantere lösung, da die website sehr gut besucht wird, hat jemand einen tipp für mich?

mit freundlichen grüßen
- Warok
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Caching.
Warok
User
Beiträge: 5
Registriert: Dienstag 13. März 2007, 05:06

Wie? Womit?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Mittels einer Technik, die allgemein als Caching bezeichnet wird.

Ganz platt ausgedrückt meint es, dass Du bestimmte "Daten" in einem schneller zugreifbaren Speicher anstelle im Speicher in Form Deiner Datenbank hällst.

Quasi: merk Dir die wichtigen Daten in einem Bereich Deiner WebApp, anstelle sie jedesmal mit SQL Statements aus der Datenbank abzufragen.

Caching ist leider immer so speziell (und wie gesagt ist es mehr eine art "Technik", als eine Implementierung), dass Du für Deinen Fall entweder eine schon speziell dafür ausgelegte Lösung suchen, oder eine eigene entwerfen musst.

Gruß,
>>Masaru<<
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Du kannst die Datenbank-Zugriffe cachen (macht SQLObject, SA bestimmt auch), Stored Procedures verwenden, geparste Templates cachen, den fertigen XHTML-Output cachen oder die Inhalte mit Proxies wie Squid replizieren und vorhalten. Oder gleich nur eine statische Website hochladen.

Das geht natürlich nur, sofern deine Website eingeschränkt oder ganz auf dynamische Inhalte für jeden einzelnen Request verzichten kann.

Letztlich denke ich aber nicht, dass ein ORM wie SA der Flaschenhals wird. Da muss schon eine ganze Menge kommen.
Warok
User
Beiträge: 5
Registriert: Dienstag 13. März 2007, 05:06

hmm das mit dem caching konzept hört sich sehr gut an, wäre aber eine lösung per sockets möglich? son socket ist ja relativ fix aufgebaut?
was ich auch nicht ganz verstehe wo ich sie merken soll, script ist ja irgendwann beendet, wo soll ich das am besten merken lassen?

@Y0Gi: das ist mir zu kompliziert :roll:
BlackJack

Hast Du überhaupt ein Problem mit der Leistungsfähigkeit, oder glaubst Du es könnte vielleicht eines geben?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Y0Gi hat geschrieben:Du kannst die Datenbank-Zugriffe cachen (macht SQLObject, SA bestimmt auch), Stored Procedures verwenden, geparste Templates cachen, den fertigen XHTML-Output cachen oder die Inhalte mit Proxies wie Squid replizieren und vorhalten. Oder gleich nur eine statische Website hochladen.
Es gibt auch Frameworks die schon selbst Unterstützung für Caching anbieten.
Achja, zu Memcached gibt es inzwischen ein neues Interface-Modul, CMemcached, welches sogar noch schneller sein soll - also es gibt eine ganze Menge Spielraum zum Optimieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Warok
User
Beiträge: 5
Registriert: Dienstag 13. März 2007, 05:06

BlackJack hat geschrieben:Hast Du überhaupt ein Problem mit der Leistungsfähigkeit, oder glaubst Du es könnte vielleicht eines geben?
jup, momentan wird php genutzt was aber... *kotz*

nun wollen wirs mit python probieren, alleine da wir das selbst "scripten" können nach unseren bedürfnissen. das prob ist auf dem selben server läuft noch der dazugehörige Gameserver der mysql verwendet. deshalb wärs doof jedes mal für jeden hp besuche bei jedem script aufruf die ganzen module zu importen um ne mysql verbindung aufzubauen.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Warok hat geschrieben:jup, momentan wird php genutzt was aber... *kotz*
Das die PHP-Performance schlecht ist, muss nicht heißen, dass die Python-Performance schlecht ist. Es gibt durchaus Frameworks die wesentlich schneller sind als PHP - selbst ohne abgefahrenes Caching.
Warok hat geschrieben:deshalb wärs doof jedes mal für jeden hp besuche bei jedem script aufruf die ganzen module zu importen um ne mysql verbindung aufzubauen.
Hast recht. Aber wenn man ein Framework verwendet muss die Verbindung ja gar nicht permanent bei jedem Request geöffnet und geschlossen werden. Der Server-Code läuft die ganze Zeit womit man sich die gesammte Initialisierung spart.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Warok
User
Beiträge: 5
Registriert: Dienstag 13. März 2007, 05:06

achso, wie kann man sowas selbst realisieren das der code weiterhin ausgführt wird also in meinem fall die mysql verbindung (evtl. wäre das hier jetzt die falsche forum kategorie) ?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Mit WSGI wird ein Teil des Codes der Anwendung nur einmalig ausgeführt. Ein entsprechender Server kümmert sich um den Rest.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Warok hat geschrieben:achso, wie kann man sowas selbst realisieren das der code weiterhin ausgführt wird also in meinem fall die mysql verbindung.
Ja, wie Y0Gi bereits schrieb ist das über WSGI möglich (solange man nicht WSGI über CGI nutzt, versteht sich). Ebenso ist das mit TurboGears gang und gäbe.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten