MySQL: Feil La tabla esta Llena - resuelto

18/12/2008
Av

Aparte de mis atribuciones regulares, tambien soya el DBA (administrador de base de datos) ad honorem y ultimamente meg at han dedicado en correguir errores y resolver problemas de MySQL. Todo empezo con el problema que detallo en continuacion:

Entre todas nuestras baser de datos existe Una eget spesielle que un maneja promedio de 40k transacciones diarias. ESTA basen de datos la cual tilsvarer en MySQL tiene una tabla la cual ya rebaso los 21 millones de registros, lo que la hacen tener los 4 GB de Información.

Por su Tamano esta tabla MyISAM mostro el feil Tabellen er full, el cual al principio nos hizo pensar que podria ser limitaciones del kernel 2.4.xo del Sistema de archivos ext2 (SI, es un Red Hat Linux 9).

Limite de 4GB de MySQL

El feil de MySQL, bordet er fullt es un mensaje que se despliega Cuando una tabla alcanza los 4GB de Tamano, en decir verdad se subestima el impacto, que ya sønn muy pocas las Aplicaciones que pueden sobrepasar esta cantidad de datos. Pero Cuando ya tenemos nuestros servicios consolidados y nuestro servidor de basene de datos MySQL Deja de funcionar, representanter un gran problema.

Es aconsejable realizar un buen analisis y Diseño de Nuestra de base de datos para que no ocurra esto. Sin embargo, en veces es dificil imaginar que una tabla pueda contener 21 millones de registros eget dos Anos.

Las Tablas Uskyldig ingen Tienen esta limitacion ya que su modelo de almacenamiento es completamente diferente. En una tabla MyISAM dinamica o de filas con longitud variabel, el Archivo de indice de la tabla (nombre_tabla.MYI) almacena utilizando filas con punteros de 32 bits dentro del Archivo de datos (nombre_tabla.MYI). Esto tiene un limite de 4 GB de Espacio.

Recordemos que la mayoria de computadoras son de 32bits ya que las tecnologias de 64 bits como el Opteron de AMD tambien Tienen soporte para 32bits.

Solucionando el problema de la tabla esta Llena

La solucion para bordet er fullt ikke es muy dicil, tan solo basta con Correr el comando ALTER TABLE, pero si puede llevar un Tiempo betydelig. Veamos como ejemplo la tabla de creatura de Mangos:

  mysql> beskrive skapning; 
  + ----------------- + ----------------------- + ------ + ----- + --------- + ---------------- + 
  | Field          | Type                 | Null | Key | Standard | Extra         | 
  + ----------------- + ----------------------- + ------ + ----- + --------- + ---------------- + 
  | Guida           | int (10) unsigned     | NOA  | PRI | nulla   | AUTO_INCREMENT | 
  | Ida             | MEDIUMINT (8) unsigned | NOA  | MUL | 0A      |                | 
  | Mapa            | smallint (5) unsigned | NOA  | MUL | 0A      |                | 
  | SpawnMask      | tinyint (3) unsigned  | NOA  |     | 1a      |                | 
  | Modelid        | MEDIUMINT (8) unsigned | NOA  |     | 0A      |                | 
  | Equipment_id   | MEDIUMINT (9)          | NOA  |     | 0A      |                | 
  | Position_x     | float                | NOA  |     | 0A      |         A A A     | 
  | Position_y     | float                | NOA  |     | 0A      |         A A A     | 
  | Position_z     | float                | NOA  |     | 0A      |         A A A     | 
  | Orientation    | float                | NOA  |     | 0A      |                | 
  | Spawntimesecs  | int (10) unsigned     | NOA  |     | 120A    |                | 
 | Spawndist      | float                | NOA  |     | 5a      |                | 
  | Currentwaypoint | MEDIUMINT (8) unsigned | NOA Â | Â Â Â Â | 0A Â Â Â Â Â | Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â | 
  | Curhealth      | int (10) unsigned     | NOA  |     | 1a      |                | 
  | Curmana        | int (10) unsigned     | NOA  |     | 0A      |             A A A | 
  | DeathState     | tinyint (3) unsigned  | NOA  |     | 0A      |                | 
  | MovementType   | tinyint (3) unsigned  | NOA  |     | 0A      |                | 
  + ----------------- + ----------------------- + ------ + ----- + --------- + ---------------- + 
  17 p set (0.02 sek) 


Para encontrar el limite del Tamano de la tabla, usamos el comando SHOW TABLE STATUS. Y Observer que Max_data_length es 4 GB.

  mysql> SHOW TABLE STATUS LIKE 'creature'G;
 *************************** En.  rad ***************************
 Â Â Â Â Â Â Â Â Â Â Navn: skapning
 Â Â Â Â Â Â Â Â Motor: MyISAM
 Â Â Â Â Â Â Â Version: 10
 Â Â Â Â Row_format: Dynamic
 Â Â Â Â Â Â Â Â Â Â Rader: 95094
 Â Avg_row_length: 46
 Â Â Â Data_length: 4382696
 Max_data_length: 281474976710655
 Â Â Index_length: 2628608
 Â Â Â Â Â Data_free: 0
 Â AUTO_INCREMENT: 106039
 Â Â Â Create_time: 2008-09-19 09:54:05
 Â Â Â Update_time: 2008-09-19 10:31:08
 Â Â Â Â Check_time: 2008-09-19 10:31:09
 Â Â Â Â Â Sortering: utf8_general_ci
 Â Â Â Â Â Â Sjekksum: NULL
 Â Create_options: row_format = DYNAMIC
 Â Â Â Â Â Â Â Kommentar: Creature System
 1 rad i sett (0,00 sek)

 FEIL:
 Ingen spørring spesifisert

 mysql> 



Vamos en arreglar esto, tecleando:

  mysql> ALTER TABLE skapning MAX_ROWS = 200000000000 AVG_ROW_LENGTH = 50;
 Query OK, 0 rader påvirket (0,03 segundos) 


Ahora si volvemos en ejecutar el comando SHOW TABLE STATUS LIKE 'creature'G; podemos ver que el nuevo tapperhet Dea Max_data_length: 1099511627775. De ser ASI, Ahora podremos almacenas mas Información en Nuestra tabla de MySQL.

Nota: Este comando no mi hardware Intel (R) Xeon (TM) CPU 2,80 GHz, 2GB con de RAM se tardo 45 Minutos.

Lo Bueno de Toda esta experiencia es que ya estamos mas preparados para migrar nuestro Centro de computo para soportar alta disponibilidad de MySQL.

Popularitet: 1% [ ? ]


Otros articulos de interes:

  1. MySQL: Como renombrar una tabla
  2. MySQL FEIL 1436 (HY000) - Tråd stabel overkjørt
  3. Como resolver el feil de Altfor mange tilkoblinger no MySQL
  4. ERROR 2002: Kan ikke koble til lokal MySQL server via socket '/ var / run / mysqld / mysqld.sock' (2)
  5. Instalacion de MySQL 5 no Ubuntu

Tags: 64 biter og Hat Linux , 2 kjerne , Red Hat Linux 9

Legg igjen en kommentar

Din epostadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*


Fatal error: Tillatt minne størrelse på 134217728 bytes oppbrukt (forsøkt å bevilge 84597773 bytes) in / home / guatewireless / site / wp-content / plugins / google-bot-bling / google-bot-bling.php on line 107