Nie powinno być znaczącej różnicy wydajności między wieloma tabelami w jednej bazie danych a wieloma tabelami w oddzielnych bazach danych.
W MySQL bazy danych (standardowy SQL używa do tego terminu „schemat”) służą głównie jako przestrzeń nazw dla tabel. Baza danych ma tylko kilka atrybutów, m.in. domyślny zestaw znaków i sortowanie. I to użycie GRANT
sprawia, że wygodnie jest kontrolować uprawnienia dostępu do bazy danych, ale nie ma to nic wspólnego z wydajnością.
Możesz uzyskać dostęp do tabel w dowolnej bazie danych z jednego połączenia (pod warunkiem, że są one zarządzane przez tę samą instancję MySQL Server). Musisz tylko zakwalifikować nazwę stołu:
SELECT * FROM database17.accounts_table;
To jest czysto syntaktyczna różnica. Nie powinno to mieć wpływu na wydajność.
Jeśli chodzi o przechowywanie, nie możesz organizować tabel w plik na bazę danych, jak spekuluje @Chris. Dzięki silnikowi pamięci masowej MyISAM zawsze masz plik na tabelę. Dzięki silnikowi pamięci masowej InnoDB masz albo jeden zestaw plików pamięci masowej, które łączą wszystkie tabele, albo masz plik na tabelę (jest to skonfigurowane dla całego serwera MySQL, a nie dla bazy danych). W obu przypadkach tworzenie tabel w jednej bazie danych nie ma przewagi ani wady w wydajności w porównaniu z wieloma bazami danych.
Nie ma wielu parametrów konfiguracyjnych MySQL, które działają na bazę danych. Większość parametrów wpływających na wydajność serwera ma zasięg obejmujący cały serwer.
Jeśli chodzi o kopie zapasowe, możesz określić podzbiór tabel jako argumenty do mysqldump
Komenda. Bardziej wygodne może być tworzenie kopii zapasowych logicznych zestawów tabel na bazę danych bez konieczności nazywania wszystkich tabel w wierszu polecenia. Ale nie powinno to mieć wpływu na wydajność, a jedynie wygodę podczas wprowadzania polecenia kopii zapasowej.