innodb_file_per_table e “too many tables” do MySQL

3

Estou executando o MySQL (5.0, mas não acho que seja importante para nada após 4.1) e tenho visto conselhos sobre o uso da opção de configuração innodb_file_per_table para tabelas InnoDB. Isso geralmente é feito para que você possa controlar melhor o espaço em disco usado pelas tabelas InnoDB, já que esse espaço nunca é recuperado, mesmo que essa tabela seja descartada posteriormente.

Mas toda vez que vejo esse conselho é dito para usá-lo se você não tem muitas tabelas ( aqui está um exemplo) . Então, minha pergunta é, quantas tabelas são muitas?

Eu tenho um aplicativo que está sendo executado para muitos clientes diferentes (cerca de 50, mas provavelmente para se aproximar de 100) e cada banco de dados tem 135 tabelas nele. São 13.500 mesas demais?

    
por mpeters 30.07.2010 / 22:53

1 resposta

4

Esse é um bom número de tabelas, mas a coisa a ser lembrada aqui é que todas delas serão abertas de uma vez - na maioria das vezes você configurará o parâmetro MySQL para arquivos abertos para cerca de 300-500, e o próprio MySQL manterá os mais ativos em seu sistema no pool de tabela de memória (cache, se você preferir) muito parecido com o modo como o kernel mantém páginas de memória para aplicativos em volta.

Pessoalmente, acredito firmemente no arquivo por tabela como uma ferramenta de gerenciamento de sistemas; Embora tenha suas compensações à medida que você aumenta corretamente, a capacidade de manter as tabelas de cada cliente distintas (você pode até distribuí-las para diferentes discos - RAID, SAN, DAS, etc. - pelo banco de dados do cliente!), manualmente, se necessário, otimizá-los, se necessário, e assim por diante, vai muito mais longe no final do dia. O preço principal que você paga é mais chamadas fsync () durante as gravações, o que pode degradar o desempenho se você tiver muitas tabelas sendo escritas também, mas em geral não é tão ruim.

    
por 31.07.2010 / 02:35