Emiel: MySQL - Sehr sehr schwerer Query, ich schaffs nicht alleine

Beitrag lesen

Hi.

400 Zugriffe in welcher Zeit?

Pro Sekunde.

Möglichst wenig Datenbankabfragen kann man erreichen, indem man oft gefragtes Zeug in einem Cache ablegt. Auch für aufwendig zu berechnende Geschichten ist es günstig, das Resultat zu cachen, wenn es danach noch ein paar Mal benötigt wird.

Das Problem ist, bei 1.000.000 Threads - welche sich aktiv ständig verändern, welche Resultate soll ich da im Cache behalten? Und welchen Cache? Reverse Proxy, DB-Cache, PHP-Cache usw..

Aus dem kann ich dich auch nicht rausholen. Ich sehe diese Probleme auch, hab aber kein Rezept dagegen.

Verdammt ;).

»» Also ausgehend davon das nur der Threadersteller Bilder einbinden darf, würde ich mit Query 1:
»» Query 1: Die Thread-Informationen + Bilder + Userinfos
»» Was hälst du davon? Er darf btw. maximal 10 Bilder einbinden.

(hältst - mit zwei t) Die Thread-Information benötigst du unbedingt und nur einmal und nicht so oft wie die Bilder, von denen es 0 bis 10 gibt. Das bekommst du mit einem LEFT JOIN geregelt, also dass auch bei 0 Bildern die Thread-Daten kommen, aber bei mehr als einem Bild hast du die Threaddaten mehr als einmal abgefragt. Was ist nun effektiver, zwei Querys oder ein zweifelhafter Join und unnötig redundante Daten? Eine kleine Messreihe wird die Antwort liefern. Überhaupt ist das Messen der verschiedenen Szenarien besser als theoretische Überlegungen.

Ich denke also mal das zwei Queries besser sind.
Ich werde es am Ende einfach mal testen mit super-smach, MyBench oder der MySQL Benchmark Suite.

Ich hab mir von Jeremy D. Zawodny & Derek J. Balling "High Performance MySQL" geholt. Ich hoffe ich werde damit am Ende einiges rausholen können.

Ist es notwendig, den Kategorienbaum je Sprache extra zu verwalten? Sind die Kategorien andere und/oder anders geschachtelt, wenn die Sprache wechselt? Oder ist der Aufbau der gleiche und du hast das Übersetzungsproblem nicht nur für die Kategorien sondern auch für alles andere und brauchst allein dafür schon einen eigenständigen Übersetzungsmechanismus?

Also ich hab da noch so mein Problem mit der Sprachumsetzung aber ich gehe davon aus, das jede Sprache ihre eigene Datenbank bekommt.

Wie auch immer, die Kategorien werden sich nicht soo häufig ändern, der Nested-Sets-Aufwand wird sich vermutlich rechnen. Man könnte auch alle Pfade einmalig (nach jeder Änderung) vorberechnen. Das ergibt auch nur so viele Datensätze wie Kategorien vorhanden sind. Eine Abfrage darauf ist einfachst und ergibt stets einen Datensatz. Noch schneller wirst du es nur mit Caching hinbekommen.

Bei Caching stehe ich halt wieder völlig im zugestopften Raum. Ich weiß nicht was Cachen, wo anfangen und wann was und überhaupt. Auch das Buch das ich mir da gekauft habe, gibt mir nicht wirklich das was ich haben will.

Genauere Vorgaben lassen meinen Bauch genauer fühlen :-) Was auch immer der rausbekommt: Probier es aus. Selbst wenn ich in einem meiner Projekte mit einem ähnlichen Fall Erfahrung hätte, könnten bei dir mit anderen Eingangsparametern andere Werte rauskommen. Versuch es mit dem geringsten Aufwand zu implementieren. Austauschen gegen etwas (nachgemessen) schnelleres kann man es immer noch. (Kapselung von Funktionalitäten und eine möglichst lose Bindung zwischen ihnen erleichtern solche Refactoring-Prozesse.)

Hm ich weiß nicht was ich dir an genaueren Angaben geben könnte.
Es handelt sich um ein sehr sehr großes Projekt. Kommerziell - ich beschäme mich fast das ich hier sowas fragen muss ;). Aber man lernt schließlich mit jedem Projekt dazu.

Was ich mich aber schon immer gefragt habe: Was haben Leute aus dem Forum wie du für Projekte. So Erfahrung und soviel Ahnung. Ich mein um "erfolgreich" zu sein gehört meines Erachtens nicht hauptsächlich das Wissen wie man es technisch umsetzt, sondern vor allem eine Idee die noch keiner vorher hatte aber ich lese soviel hier in Forum, poste mal hier mal da - mit irgendeinem Nick der mir gerade einfällt und es stechen viele Leute seit Jahren ins Auge, wahasaga(oder so / ChrisB??), Sven R., du Dedlfix, Tom(der mir aber erst seit kurzem auffällt weil eher fast jeden deiner Posts kommentiert) usw..  Was hast du für Projekte? Könntest du mal deine größten nennen? Oder mir eine Mail schicken? lolrofl@hotmail.de (ja der Name ist kindisch, aber meine - ich melde mich überall damit an E-Mail)

Gruß, Emiel