Melhor mecanismo de banco de dados do Mysql quando a consulta de exclusão de inserção de inserção não é feita

3

Qual deve ser o melhor mecanismo do db Mysql Quando consultas como Update, Insert, Delete são feitas com dificuldade (99% do tempo não são feitas)

O banco de dados tem uma entrada de lotes principalmente de tipo de dados numéricos, a consulta select é baseada em uma instrução condicional que compara o valor numérico e retorna os resultados

Devo usar o MyISAM aqui?

Mais uma coisa é O banco de dados será usado por vários usuários ao mesmo tempo

obrigado

    
por Isdev 15.07.2011 / 16:44

2 respostas

4

Eu iria com o MyISAM pelo InnoDB por três (3) razões principais

Razão # 1: o mecanismo de armazenamento MyISAM fornece mecanismos mais simples para melhorar o desempenho de leitura

As tabelas MyISAM são compostas por apenas três arquivos

  • .frm (arquivo de formato)
  • .MYD (arquivo de dados)
  • .MYI (arquivo de índice)

Você pode ajustar tabelas MyISAM para leituras mais rápidas com uma simples alteração no formato de linha da tabela.

Por exemplo, as páginas 71-73 do livro projeto e ajuste do banco de dados MySQL recomendam fazer isso em um MyISAM tabela:

ALTER TABLE tblname ROW_FORMAT=Fixed;

Isso converterá todos os VARCHARs em CHARs internamente. Isso também tornará a tabela MyISAM cerca de 50% maior, mas terá um desempenho de leitura maior, porque o comprimento da string é mais rigidamente verificado com VARCHAR, enquanto o tamanho de um CHAR é fixo.

Como alternativa, você pode executar o myisampack em uma tabela MyISAM para reduzir o tamanho da tabela MyISAM e criar um novo formato somente leitura.

Estas são operações únicas que você pode executar em qualquer tabela MyISAM. Alterar o formato de linha em uma tabela InnoDB é um pouco inútil devido ao seu layout de índice em cluster (explicado na Razão # 3)

Razão # 2: o cache MyISAM é mais simples

MyISAM armazena apenas páginas de índice . O InnoDB armazena em cache dados e páginas de índice . Você pode assim configurar o cache de chaves do MyISAM menor que um InnoDB Buffer Pool.

Razão # 3: o InnoDB carrega muita bagagem para proteger os dados

O InnoDB apresenta recuperação de falhas na inicialização, mesmo que nada esteja errado (precaução)

O InnoDB sempre executa o MVCC em relação às linhas de dados . Isso cria uma faxina extra para uma casa que nunca fica confusa com INSERTs, UPDATEs ou DELETEs.

O InnoDB realiza pesquisas de índices duplas o tempo todo, principalmente ao usar índices não-UNIQUE. A razão pela qual isso acontece é devido a rowid interna do InnoDB index que está intimamente ligado ao índice clusterizado .

Você pode ignorar a inicialização do InnoDB com o seguinte em /etc/my.cnf

[mysqld]
skip-innodb

O MySQL irá assim reiniciar muito mais rapidamente. Você também pode excluir / var / lib / mysql / ibdata1, / var / lib / mysql / ib_logfile0 e / var / lib / mysql / ib_logfile1.

CAVEAT

Se os dados forem pequenos o suficiente, monte / var / lib / mysql em um disco RAM. Então, todas as apostas estão canceladas para comparar MyISAM ao InnoDB.

    
por 15.07.2011 / 18:54
3

link

O InnoDB superará o myiasm se você configurar o banco de dados na memória ... isto é, se você conseguir colocá-lo na memória.

    
por 15.07.2011 / 17:11