Mysql
 sql >> Datenbank >  >> RDS >> Mysql

1 sehr großer Tisch oder 3 große Tische? MySQL-Leistung

Dies ist eigentlich eine Diskussion über Singe - Table - Inheritance vs. Table Per Class Inheritance und das Fehlen von Joined Inheritance. Die erstere bezieht sich auf Methode A, die zweite auf Ihre Methode B und Methode C würde darin bestehen, alle IDs Ihrer Posts in einer Tabelle zu haben und bestimmte Attribute für Gruppen oder Benutzer aufzuschieben - Posts ijto verschiedene Tabellen. Während Sie immer eine große Tabelle haben hat seine negativen Auswirkungen in Bezug auf vollständige Scans von Tabellen. Der Ansatz, Tabellen aufzuteilen, hat auch seine eigenen. Es hängt davon ab, wie oft Ihre Anwendung auf die gesamte Liste der Posts zugreifen muss, anstatt nur bestimmte Post-Typen abzurufen. Eine weitere Überlegung, die Sie berücksichtigen sollten, ist die Datenpartitionierung, die mit MySQL oder Oracle Database durchgeführt werden kann, z. Dies ist eine Möglichkeit, Ihre Daten in Tabellen zu organisieren, die Möglichkeiten für den Informationslebenszyklus bieten (auf welche Daten wird wann und wie oft zugegriffen, ein Teil davon kann verschoben und komprimiert werden, wodurch die Datenbankgröße reduziert und die Geschwindigkeit für den Zugriff auf den linken Teil der Daten in der Datei erhöht wird Tabelle), die im Wesentlichen in drei Haupttechniken unterteilt ist:Bereichsbasierte Partitionierung, Listenbasierte Partitionierung und Hash-basierte Partitionierung Eine bestimmte Zeitspanne ist abgelaufen. Was in der Tat eine wichtige Entscheidung für das Anwendungsdesign ist und die Leistung steigern kann, ist die Unterscheidung zwischen Lese- und Schreibzugriffen auf die Datenbank auf Anwendungsebene. Betrachten Sie ein MySQL - Backend:Weil Schreibzugriffe offensichtlich wichtiger für die Datenbankleistung sind als Lesezugriffe Sie könnte eine MySQL - Instanz zum Schreiben in die Datenbank und eine andere als Replikant einrichten o Dies gilt für die Lesezugriffe, obwohl dies auch diskutiert werden kann, hauptsächlich wenn es um RDT (Echtzeitentscheidungen) geht, wo absolute Datenkonsistenz zu jedem Zeitpunkt ein Muss ist. Verwenden Sie auch Objektpools als Schicht zwischen Ihrer Anwendung und der Datenbank ist eine Technik zur Verbesserung der Anwendungsleistung, obwohl ich noch keine bestehenden Lösungen in der PHP-Welt kenne. Oracle Hot Cache ist ein ziemlich ausgeklügeltes Beispiel dafür. Sie könnten jedoch Ihren eigenen Cache erstellen, der auf einer In-Memory-Datenbank implementiert ist oder Memcache verwendet.