Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL:Muitas tabelas ou muitos bancos de dados?


Não deve haver diferença de desempenho significativa entre várias tabelas em um único banco de dados versus várias tabelas em bancos de dados separados.

No MySQL, os bancos de dados (o SQL padrão usa o termo "esquema" para isso) servem principalmente como um namespace para tabelas. Um banco de dados tem apenas alguns atributos, por exemplo, o conjunto de caracteres padrão e o agrupamento. E esse uso de GRANT torna conveniente controlar privilégios de acesso por banco de dados, mas isso não tem nada a ver com desempenho.

Você pode acessar tabelas em qualquer banco de dados a partir de uma única conexão (desde que sejam gerenciadas pela mesma instância do MySQL Server). Você só precisa qualificar o nome da tabela:
SELECT * FROM database17.accounts_table;

Esta é puramente uma diferença sintática. Não deve afetar o desempenho.

Em relação ao armazenamento, você não pode organizar tabelas em um arquivo por banco de dados, como especula o @Chris. Com o mecanismo de armazenamento MyISAM, você sempre tem um arquivo por tabela. Com o mecanismo de armazenamento InnoDB, você tem um único conjunto de arquivos de armazenamento que combinam todas as tabelas, ou então você tem um arquivo por tabela (isso é configurado para todo o servidor MySQL, não por banco de dados). Em ambos os casos, não há vantagem ou desvantagem de desempenho em criar as tabelas em um único banco de dados versus muitos bancos de dados.

Não há muitos parâmetros de configuração do MySQL que funcionem por banco de dados. A maioria dos parâmetros que afetam o desempenho do servidor tem escopo em todo o servidor.

Com relação aos backups, você pode especificar um subconjunto de tabelas como argumentos para o mysqldump comando. Pode ser mais conveniente fazer backup de conjuntos lógicos de tabelas por banco de dados, sem precisar nomear todas as tabelas na linha de comando. Mas não deve fazer diferença no desempenho, apenas conveniência para você ao inserir o comando de backup.