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

MySQL:Viele Tabellen oder viele Datenbanken?

Zwischen mehreren Tabellen in einer einzelnen Datenbank und mehreren Tabellen in separaten Datenbanken sollte kein signifikanter Leistungsunterschied bestehen.

In MySQL dienen Datenbanken (Standard-SQL verwendet dafür den Begriff "Schema") hauptsächlich als Namensraum für Tabellen. Eine Datenbank hat nur wenige Attribute, z.B. den Standardzeichensatz und die Sortierung. Und diese Verwendung von GRANT macht es bequem, Zugriffsrechte pro Datenbank zu kontrollieren, aber das hat nichts mit der Leistung zu tun.

Sie können über eine einzige Verbindung auf Tabellen in jeder Datenbank zugreifen (vorausgesetzt, sie werden von derselben Instanz von MySQL Server verwaltet). Sie müssen nur den Tabellennamen qualifizieren:

SELECT * FROM database17.accounts_table;

Dies ist ein rein syntaktischer Unterschied. Dies sollte keine Auswirkungen auf die Leistung haben.

In Bezug auf die Speicherung können Sie Tabellen nicht in einer Datei pro Datenbank organisieren, wie @Chris spekuliert. Mit der MyISAM-Speicher-Engine haben Sie immer eine Datei pro Tabelle. Mit der InnoDB-Speicher-Engine haben Sie entweder einen einzigen Satz von Speicherdateien, die alle Tabellen zusammenführen, oder Sie haben eine Datei pro Tabelle (diese wird für den gesamten MySQL-Server konfiguriert, nicht pro Datenbank). In beiden Fällen gibt es keinen Leistungsvorteil oder -nachteil beim Erstellen der Tabellen in einer einzelnen Datenbank im Vergleich zu vielen Datenbanken.

Es gibt nicht viele MySQL-Konfigurationsparameter, die pro Datenbank funktionieren. Die meisten Parameter, die sich auf die Serverleistung auswirken, gelten für den gesamten Server.

In Bezug auf Backups können Sie eine Teilmenge von Tabellen als Argumente für mysqldump angeben Befehl. Es kann bequemer sein, logische Tabellensätze pro Datenbank zu sichern, ohne alle Tabellen in der Befehlszeile benennen zu müssen. Aber es sollte keinen Einfluss auf die Leistung haben, sondern nur die Bequemlichkeit für Sie, wenn Sie den Backup-Befehl eingeben.