This page has been translated from Spanish

...::: Guatewireless.org ::::..

Tecnologia, Software Libre, da Guatemala, Open Source, Linux, Wireless, WiFi, Scripting, Debian, CentOS, Gentoo, Red Hat, SuSE, Windows

MySQL: A mesa está cheia de erro - resolvido

Para além das minhas funções regulares, também estou a DBA administrador de banco de dados () e honorários ultimamente tenho erros solucionar correguir e MySQL. Tudo começou com o problema descrito abaixo:

Entre todas as nossas bases de dados, há um em especial que lida com uma média de 40k de transações por dia. Este banco de dados MySQL é executado em que tem uma tabela que já ultrapassa os 21 milhões de registros, o que torna a ter 4 GB de informações.

Por seu tamanho, esse erro mostrou MyISAM A tabela está cheia, que a princípio pensamos que poderia ser limitações 2.4.x kernel do sistema de arquivos ext2 (se for um Red Hat Linux 9).

Limite MySQL 4GB

O erro do MySQL, a mesa está cheia é uma mensagem que é exibida quando um quadro chega a 4 GB de tamanho, realmente subestimado o impacto, porque são muito poucos aplicativos que podem exceder essa quantidade de dados. Mas quando nós consolidamos nossos serviços e nosso banco de dados MySQL pára de funcionar, é um grande problema.

É aconselhável fazer uma boa análise e concepção do nosso banco de dados para que isso não aconteça. No entanto, às vezes é difícil imaginar que uma tabela pode conter registros de 21 milhões em dois anos.

Tabelas InnoDB não tem essa limitação, porque o seu modelo de armazenamento é completamente diferente. Em uma tabela MyISAM com linhas de comprimento dinâmico ou variável, o arquivo de índice da tabela (nombre_tabla.MYI) linhas armazenadas usando 32-ponteiro bit no arquivo de dados (nombre_tabla.MYI). Isso tem um limite de 4 GB de espaço.

Lembre-se que a maioria dos computadores são 32bit desde tecnologias como 64-processadores bit AMD Opteron também possui suporte para 32 bits.

Resolver o problema da tabela está cheia

A solução para a mesa está cheia não é muito dicil, apenas o suficiente para executar o comando ALTER TABLE, mas pode levar um tempo considerável. Considere o exemplo da tabela criatura Sleeve Length:

  mysql> describe criatura; 
  +-----------------+-----------------------+------+ -----+---------+----------------+ 
  | Campo          | Tipo                 | Null | Key | Default | Extra         | 
  +-----------------+-----------------------+------+ -----+---------+----------------+ 
  | Guia           | int (10)     unsigned | Noa | PRI | NULL  | auto_increment | 
  | Ida             | MEDIUMINT (8) unsigned | Noa | MUL | 0A      |                | 
  | Mapa            | smallint (5) unsigned | Noa | MUL | 0A      |                | 
  | SpawnMask      | tinyint (3) A unsigned | Noa |     |   1    |                | 
  | Modelos        | MEDIUMINT (8) unsigned | Noa |     | 0A      |                | 
  | Equipment_id   | MEDIUMINT (9)          | Noa |     | 0A      |                | 
  | Position_x     | float                | Noa |     | 0A      |                | 
  | Position_y     | float                | Noa |     | 0A      |                | 
  | Position_z     | float                | Noa |     | 0A      |                | 
  | Orientação    | float                | Noa |     | 0A      |                | 
  | Spawntimesecs  | int (10)     unsigned | Noa |     | 120A    |                | 
  | Spawndist      | float                | Noa |     | 5      |                | 
  | Currentwaypoint | MEDIUMINT (8) unsigned | Noa | Â Â Â Â | 0A Â Â Â Â Â | Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â | 
  | Curhealth      | int (10)     unsigned | Noa |     |   1    |                | 
  | Curmana        | int (10)     unsigned | Noa |     | 0A      |                | 
  | DeathState     | tinyint (3) A unsigned | Noa |     | 0A      |                | 
  | MovementType   | tinyint (3) A unsigned | Noa |     | 0A      |                | 
  +-----------------+-----------------------+------+ -----+---------+----------------+ 
  17 rows in set (0.02 sec) 


Para encontrar o limite do tamanho da tabela, use o SHOW TABLE STATUS. E note que Max_data_length é de 4 GB.

  mysql> criatura SHOW TABLE STATUS LIKE '\ G;
 *************************** 1.  row ***************************
 Â Â Â Â Â Â Â Â Â Â Nome: criatura
 Â Â Â Â Â Â Â Â Motor: MyISAM
 Â Â Â Â Â Â Â Versão: 10
 Â Â Â Â ROW_FORMAT: Dynamic
 Â Â Â Â Â Â Â Â Â Â Rows: 95.094
 Â AVG_ROW_LENGTH: 46
 Â Â Â tam_dado: 4382696
 Max_data_length: 281474976710655
 Â Â index_length: 2628608
 Â Â Â Â Â Data_free: 0
 Â AUTO_INCREMENT: 106.039
 Â Â Â Create_time: 2008-09-19 09:54:05
 Â Â Â Update_time: 2008-09-19 10:31:08
 Â Â Â Â Check_time: 2008-09-19 10:31:09
 Â Â Â Â Â Collation: utf8_general_ci
 Â Â Â Â Â Â Checksum: NULL
 Â Create_options: ROW_FORMAT = DYNAMIC
 Â Â Â Â Â Â Â Comentário: Summon System
 1 row in set (0.00 sec)

 ERRO:
 No consulta especificada

 mysql> 



Vamos corrigir isso escrevendo:

  mysql> ALTER TABLE AVG_ROW_LENGTH criatura max_rows = 200000000000 = 50;
 Query OK, 0 rows affected (0,03 segundos) 


Agora, se executar a criatura SHOW TABLE STATUS LIKE '\ G, podemos ver idéia de que o novo valor Max_data_length: 1099511627775. Se assim for, agora podemos armazenar mais informação na nossa tabela de MySQL.

Nota: Este comando no meu hardware Intel (R) Xeon (TM) CPU 2.80GHz, com 2GB de RAM que demora 45 minutos.

A coisa boa sobre toda esta experiência é que estamos mais dispostos a migrar o nosso centro de computação para suporte de alta disponibilidade para o MySQL.

Popularity: 2%



etiquetada como:

Faça um comentário

Por favor, observe o seguinte:
Os comentários são moderados, para que ele possa tomar a serem publicados. Não há necessidade de repetir o seu comentário.
Seu e-mail nunca será revelado.

Os termos de pesquisa


  • limitações mysql
  • tamanho do registro mysql
  • mesas cheias de dados
  • inserir valores em uma tabela completa
  • mysql tabela completa
  • tabela do mysql está cheio
  • exemplo de como o log completo gundbaund
  • tabela completa do MySQL
  • Fora as declarações preparadas com MySQL
  • mysql tabela completa
  • uma tabela que é preenchida com 1
  • MAX_ROWS mysql
  • ROW_FORMAT
  • renomear tabela mysql
  • restauração de 4 GB mysql
  • problemas com uma tabela contendo um milhão de discos
  • problema tabelas mysql com mais de 1 milhão de registros
  • problemas com MyISAM MySQL
  • BD mysql restaurar problema na vitória de 64
  • mysql ROW_FORMAT
  • mysql tabela completa
  • mysql um milhão de discos
  • tabela do mysql está cheio
  • ROW_FORMAT = dynamic; myisam
  • SHOW TABLE STATUS LIKE \ tabela \
  • A mesa está cheia ubuntu mysql
  • A mesa está cheia innodb mysql
  • MYSQL tamanho da tabela JANELA
  • veja o exemplo de uma tabela de dados preenchida
  • tamanho de uma tabela mysql
  • tabela mysql está cheio
  • MyISAM maiores que 4GB
  • mesas cheias mysql
  • mysql tabela mostra o tamanho da tabela de status
  • criatura manipula tabelas
  • tabelas criatura
  • tabela mysql 2 milhões de registros
  • tabela completa do MySQL
  • tabela completa dos dados do usuário
  • tabela mysql está cheio
  • table is full
  • tabela mysql error
  • tabela do MySQL pode suportar dois milhões recorde
  • mysql innodb Data_free Auto_increment
  • criar tabela alças guia
  • error: table is full
  • erro mysql renomear as entradas da tabela
  • tabelas de erro do MySQL versão
  • banco de dados mysql error completa
  • Exemplos de uma tabela de erros
  • exemplo de modelo estático em Tabelas
  • exemplo de como gunbound registro completo
  • onde, sob banco de dados completo
  • manga placas criatura
  • criar tabela de índice completo
  • executar tabelas mysql
  • como uma tabela completa
  • como a batida de um milhão de registros em mysql
  • mudança myisam innodb mysql
  • banco de dados mysql completa