Eu tenho um banco de dados MySQL com 15 tabelas. Três deles são usados para autenticação de sites e outros três são tabelas que são frequentemente lidas e gravadas. Em seguida, outras tabelas são definidas e eu nunca precisaria alterá-las, a menos que fizesse algumas alterações significativas no aplicativo da web.
Existe algo que eu possa fazer para tornar meu banco de dados mais eficiente e para desempenho, já que não preciso gravar nessas tabelas em tempo de execução?
No Google, consegui ver algumas configurações do MyISAM, mas preferiria ficar com o InnoDB. Não foi possível encontrar outras informações além de certas pessoas que têm todo o banco de dados como somente leitura. No entanto, o meu tem algumas tabelas que eu precisaria ler/escrever.
EDITAR:
Quatro tabelas têm 4 MB ou menos e uma tem 7,55 MB. Também não precisaria ajustar todos os meus procedimentos para verificar se a tabela na memória existe ou não? Porque pode desaparecer quando a instância for reiniciada ou algo assim.
Resposta curta: você está fazendo um trabalho desnecessário para si mesmo. Use InnoDB para tudo. Esqueça o "somente leitura".
Resposta longa:
Linha de fundo...
key_buffer_size
como 20M apenas porque algumas tabelas do sistema usam esse mecanismo.innodb_buffer_pool_size
para 70% de RAM (ou uma porcentagem menor se você tiver menos de 4 GB de RAM).No MySQL você pode revogar e conceder os privilégios específicos .
Então, vamos
REVOKE ALL
privilégios para a tabela do banco de dados específica como você deseja e depois disso, concederemos apenasSELECT
privilégios a ela, então ela se tornará uma tabela somente leitura :