MySQL: Le tableau est d'erreur complet - Résolue
En dehors de mes fonctions régulières, je suis aussi le DBA (administrateur de base de données) et honorifique dernièrement j'ai eu des erreurs dépanner correguir et MySQL. Tout a commencé avec le problème décrit ci-dessous:
Parmi l'ensemble de nos bases de données, il en est un en particulier qui gère une moyenne de 40 k de transactions par jour. Cette base de données fonctionne sur MySQL qui a un tableau qui dépasse déjà les 21 millions de dossiers, qui lui associer les 4 Go d'informations.
Pour sa taille, cette erreur a montré les tables MyISAM Le tableau est complet, qui d'abord nous avons pensé que nous pourrions avoir des limitations 2.4.x du noyau système de fichiers ext2 (si elle est un produit Red Hat Linux 9).
Limite de 4 Go de MySQL
L'erreur MySQL, la table est pleine est un message qui s'affiche quand une table atteint 4 Go en taille, vraiment sous-estimé l'impact, car ils sont très peu de demandes que mai dépasser cette quantité de données. Mais quand nous avons consolidé nos services et notre serveur de base de données MySQL arrête de fonctionner, est un problème majeur.
Il est conseillé de faire une bonne analyse et la conception de notre base de données afin que cela ne se produise pas. Toutefois, il est parfois difficile d'imaginer qu'un tableau peut contenir 21 millions de disques en deux ans.
Les tables InnoDB ne possèdent pas cette limitation, car son modèle de stockage est complètement différent. Dans une table MyISAM avec des lignes de longueur dynamique ou variable, le fichier d'index de la table (nombre_tabla.MYI) lignes stockées à l'aide de 32 pointeur de bits dans le fichier de données (nombre_tabla.MYI). Cela a une limite de 4 Go d'espace.
Rappelez-vous que la plupart des ordinateurs 32 bits car les technologies sont, comme 64 processeurs AMD bit Opteron aussi avoir le support 32 bits.
Résoudre le problème de la table est pleine
La solution à la table est pleine n'est pas très dicil, juste assez pour exécuter la commande ALTER TABLE, mais cela peut prendre un temps considérable. Prenons l'exemple de la table créature Longueur des manches:
mysql> DESCRIBE animal;
+-----------------+-----------------------+------+ -----+---------+----------------+
| Field          | Type                 | Null | Key | Default | Extra         |
+-----------------+-----------------------+------+ -----+---------+----------------+
| Guide           | int (10)     unsigned | Noa | PRI |  NULL | auto_increment |
| Ida             | mediumint (8) unsigned | Noa | MUL | 0A      |                |
| Plan du site            | smallint (5) unsigned | Noa | MUL | 0A      |                |
| SpawnMask      | tinyint (3) Un unsigned | Noa |     | 1      |                |
| Modèles        | 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      |                |
| Orientation    | 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) Un unsigned | Noa |     | 0A      |                |
| MovementType   | tinyint (3) Un unsigned | Noa |     | 0A      |                |
+-----------------+-----------------------+------+ -----+---------+----------------+
17 rows in set (0.02 sec)
Pour trouver la limite de la taille de la table, utilisez la commande SHOW. Et notez que Max_data_length est de 4 GB.
mysql> SHOW TABLE STATUS créature LIKE '' \ G;
*************************** 1. row ***************************
          Nom: La créature
        Moteur: MyISAM
       Version: 10
    Row_format: Dynamic
          Lignes: 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
     Collation: utf8_general_ci
      Checksum: NULL
 Create_options: ROW_FORMAT = DYNAMIQUE
       Commentaire: Summon System
1 row in set (0.00 sec)
ERROR:
Aucune requête spécifiée
mysql>
Nous allons corriger cela en tapant: mysql> ALTER TABLE AVG_ROW_LENGTH créature max_rows = 200000000000 = 50;
Query OK, 0 rows affected (0.03 secondes)





























