MySQL: Tabellen er full feil - løst
Bortsett fra mine vanlige oppgaver, er jeg også DBA (database administrator) og tillitsverv i det siste har jeg vært correguir feilsøke feil og MySQL. Alt startet med problemet beskrevet nedenfor:
Blant alle våre databaser, det er ett spesielt som håndterer et gjennomsnitt på 40k transaksjoner per dag. Denne databasen kjører på MySQL som har en tabell som allerede overstiger de 21 millioner plater, noe som gjør har det 4 GB med informasjon.
For størrelsen sin, viste denne feilen MyISAM bord Tabellen er full, som ved første vi tenkte vi kunne være begrensninger 2.4.x kernel ext2 filsystem (hvis det er en Red Hat Linux 9).
MySQL's 4GB Limit
Den MySQL feil, er bordet fullt er en melding som vises når en tabell når 4GB i størrelse, virkelig undervurderte effekten, som de er veldig få programmer som kan overstige dette beløpet av data. Men når vi har samlet våre tjenester og vår database server MySQL slutter å fungere, er et stort problem.
Det anbefales å gjøre en god analyse og design av databasen vår, slik at dette ikke skjer. Men noen ganger er det vanskelig å forestille seg at en tabell kan inneholde 21 millioner poster i to år.
InnoDB tabeller har ikke denne begrensningen fordi bagasje modell er helt annerledes. I en MyISAM bord med dynamisk eller variabel lengde rader, indeksfilen av tabellen (nombre_tabla.MYI) rader lagret bruker 32-bits pekeren i datafilen (nombre_tabla.MYI). Dette har en grense på 4 GB lagringsplass.
Husk at de fleste datamaskiner er 32bit siden teknologier som 64-bits AMD Opteron-prosessorer har også støtte for 32bit.
Løse problemet med bordet er fullt
Løsningen på bordet er fullt er ikke veldig dicil, akkurat nok til å kjøre ALTER TABLE-kommandoen, men det kan ta lang tid. Vurder eksempel på skapningen tabellen Sleeve Length:
mysql> beskrive skapning;
+-----------------+-----------------------+------+ -----+---------+----------------+
| Field          | Type                 | Null | Key | Default | Extra         |
+-----------------+-----------------------+------+ -----+---------+----------------+
| Guide           | int (10)     unsigned | NoA | PRI | NULL  | auto_increment |
| Ida             | mediumint (8) unsigned | NoA | MUL | 0A      |                |
| Kart            | smallint (5) unsigned | NoA | MUL | 0A      |                |
| SpawnMask      | tinyint (3) unsigned  | NoA |     |   1A    |                |
| Modeller        | 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      |                |
| Orientering A A A | float                | NoA |     | 0A      |             A A A |
| Spawntimesecs  | int (10)     unsigned | NoA |     | 120A    |                |
| Spawndist      | float                | NoA |     | A 5A     |                |
| Currentwaypoint | mediumint (8) unsigned | NoA | Â Â Â Â | 0A Â Â Â Â Â | Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â |
| Curhealth      | int (10)     unsigned | NoA |     |   1A    |                |
| Curmana        | int (10)     unsigned | NoA |     | 0A      |                |
| DeathState     | tinyint (3) unsigned  | NoA |     | 0A      |                |
| MovementType   | tinyint (3) unsigned  | NoA |     | 0A      |                |
+-----------------+-----------------------+------+ -----+---------+----------------+
17 rader i sett (0.02 sek)
For å finne grensen for størrelsen på tabellen, bruker Vis tabell STATUS. Og merk at Max_data_length er 4 GB.
mysql> Vis tabell STATUS LIKE 'vesen' \ G;
*************************** 1. rad ***************************
          Navn: skapning
        Motor: MyISAM
       Versjon: 10
    Row_format: Dynamisk
          Rows: 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
      Checksum: NULL
 Create_options: row_format = DYNAMISK
       Kommentar: Innkalling System
1 rad i sett (0.00 sek)
FEIL:
Ingen søket spesifiseres
mysql>
La oss løse dette ved å skrive: mysql> ALTER TABLE skapning AVG_ROW_LENGTH max_rows = 200000000000 = 50;
Query OK, 0 rows affected (0.03 sekunder)





























