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)





























