sql >> Database >  >> RDS >> Mysql

MySQL:Veel tabellen of veel databases?

Er mag geen significant prestatieverschil zijn tussen meerdere tabellen in een enkele database versus meerdere tabellen in afzonderlijke databases.

In MySQL dienen databases (standaard SQL gebruikt hiervoor de term "schema") voornamelijk als namespace voor tabellen. Een database heeft maar een paar attributen, b.v. de standaard tekenset en sortering. En dat gebruik van GRANT maakt het gemakkelijk om toegangsrechten per database te beheren, maar dat heeft niets te maken met prestaties.

U hebt toegang tot tabellen in elke database via een enkele verbinding (op voorwaarde dat ze worden beheerd door dezelfde instantie van MySQL Server). U hoeft alleen de tafelnaam te kwalificeren:

SELECT * FROM database17.accounts_table;

Dit is puur een syntactisch verschil. Het zou geen effect moeten hebben op de prestaties.

Wat betreft opslag, je kunt tabellen niet ordenen in een bestand-per-database, zoals @Chris speculeert. Met de MyISAM storage engine heb je altijd een bestand per tafel. Met de InnoDB-opslagengine heb je ofwel een enkele set opslagbestanden die alle tabellen samenvoegt, of je hebt een bestand per tabel (dit is geconfigureerd voor de hele MySQL-server, niet per database). In beide gevallen is er geen prestatievoor- of nadeel bij het maken van tabellen in een enkele database in vergelijking met veel databases.

Er zijn niet veel MySQL-configuratieparameters die per database werken. De meeste parameters die van invloed zijn op de serverprestaties zijn serverbreed van opzet.

Met betrekking tot back-ups kunt u een subset van tabellen specificeren als argumenten voor de mysqldump opdracht. Het kan handiger zijn om een ​​back-up te maken van logische tabellensets per database, zonder dat u alle tabellen op de opdrachtregel een naam hoeft te geven. Maar het zou geen verschil moeten maken voor de prestaties, alleen voor het gemak voor u als u de back-upopdracht invoert.



  1. Hoe de serialisatiegegevens in MySQL bij te werken

  2. Migratie om de standaardwaarde voor een veld te wijzigen en de waarde van alle bestaande records alleen te wijzigen in een nieuwe standaardwaarde als deze een oude standaardwaarde heeft.

  3. MySQL ONLY IN() equivalente clausule

  4. Groeperen in interval van 5 minuten binnen een tijdsbereik