Pergunta

Eu tenho a seguinte pergunta:Eu sou a concepção de aplicativo da web com várias dezenas de pequenas tabelas de pesquisa:Estas tabelas usualmente conter três colunas (ID, Nome, Descrição) e um par de linhas (a maioria com menos de 50, max é de cerca de 450).

Essas tabelas de pesquisa são esperados para alterar apenas raramente (eles vêm de padrão, que muda de vez em vários anos) e será usada apenas para:

  • opções de preenchimento no select do html
  • ser associado a outros registros em relatórios

Haverá apenas SELECT declarações sobre essas tabelas 99 % das vezes, mas lá vai ser um monte deles.

Eu estou querendo saber, qual o mecanismo de banco de dados seria mais eficiente utilizar?

Aqui estão as minhas considerações:

MEMÓRIA

  • pro:muito rápido
  • con:se o servidor falhar, todos os dados são perdidos e precisam ser recriados
  • con:não oferece suporte a chaves estrangeiras

comprimido MyISAM

  • pro:rápido
  • con:não oferece suporte a chaves estrangeiras

O InnoDB

  • pro:o suporte a chaves estrangeiras

O que eu gostaria de perguntar, é se haverá uma significativa vantagem em usar algo diferente do que O InnoDB - performance

Obrigado, Zbyněk

Foi útil?

Solução

Eu respondi a uma pergunta semelhante em agosto de 2011: Qual DBMS é bom para leituras super rápidas e uma simples estrutura de dados?

Como você está perguntando sobre o MySQL e qual motor de armazenamento. Para ser honesto, é difícil dizer porque há raras ocasiões quando Myisam pode superar o InnoDB quando se trata de selecionar.

Aqui estão alguns dos meus posts anteriores nesta controvérsia

Você pode perguntar agora: por que eu sempre favoreceria myisam mais innodb?

Dê uma olhada neste diagrama (criado por Vadim Tkachenko, Perona CTO)

InnoDB Architecture

Myisam irá cache indexos e sua tabela terá 2 índices (chave primária no ID e um índice de nome). Por outro lado, o InnoDB tem muitas partes móveis para acomodar, especialmente se a piscina de buffer innodb tiver que carregar e descartar páginas 16K periodicamente.

Para ser justo, você deve fazer um experimento.

Isso lhe dará a melhor avaliação para a opção do motor de armazenamento para o seu conjunto de dados.

experimente !!!

Outras dicas

  • "Comprimido MyISAM" -- o que é isso?Talvez "Arquivo Morto"?
  • A compressão não for necessário;as tabelas são muito pequenos, e rapidamente será totalmente em cache.
  • FOREIGN KEYS -- Por quê?Você tem depurado de código, não é?Não haverá oscilação coisas a verificar.
  • MEMORY não é razoável, se você escreve 'recarregar' código que é executado sempre que você abrir o servidor, e todas as atualizações para a tabela escritos, tanto para o MEMORY tabela de um persistente de cópia de segurança.
  • MyISAM ROW_FORMAT=FIXED -- que é um velho wive do conto;utilização DYNAMIC e VARCHARs.
  • O InnoDB é o "cluster" PRIMARY KEY faz pesquisas um pouco mais rápido do que o MyISAM para o seu propósito.
  • Você sei que as tabelas de pesquisa estão causando uma notável desaceleração?Eu duvido seriamente que eles são.
  • Fazer não usar tabelas de pesquisa para "contínuo" de valores, tais como FLOATs e DATEs.

Eu voto para o InnoDB sem FKs.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange
scroll top