maximale Tabellengröße 4 Gigabyte - woran liegts?

MySQL, PostgreSQL, SQLite
mr_vista
Posts: 57
Joined: 2006-08-01 22:33
Location: Berlin

maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by mr_vista » 2007-01-08 21:31

Hallo!

Vor Kurzem ist eine Tabelle in meiner Datenbank 4096 MB groß geworden... ab da an wurden keine Schreibvorgänge mehr angenommen. Als temporäre Lösung wurde die Tabelle in mehrere Kleine gesplittet, ist aber auch nicht gerade die eleganteste Lösung...

das System: Suse 9.3 (2.6er Kernel)

MySql: 4.x

Dateisystem: ext3

Laut MySql.com sollten mit dem 2.6er Kernel und dieser MySql Version Tabellen in Terabyte-Größe kein Problem sein, aber warum auch immer funktionierts wohl nicht. ...Meine Theorie ist, dass die Partition so eingerichtet wurde, dass die maximale Dateigröße bei 4GB liegt ... kriegt man das irgendwie raus bzw. lässt sich sowas im nachhinein ändern? Hat jemand eine Idee was es sonst noch sein könnte?

Danke und Gruß

User avatar
daemotron
Administrator
Administrator
Posts: 2635
Joined: 2004-01-21 17:44

Re: maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by daemotron » 2007-01-09 17:32

AFAIR können Dateien auf einem ext2/3-FS (32-Bit-Kernel) bis zu 16 GB groß werden, wenn die Blocksize auf 1024 Byte gesetzt wurde (Default bei mke2fs). Bei großzügigeren Blocksizes entsprechend sogar noch größer.

Mit dumpe2fs solltest Du eigentlich feststellen können, mit welcher Blocksize Dein ext3 angelegt wurde...

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by isotopp » 2007-01-09 20:35

Mr_Vista wrote:Vor Kurzem ist eine Tabelle in meiner Datenbank 4096 MB groß geworden... ab da an wurden keine Schreibvorgänge mehr angenommen.
The Table is full

You are using a MyISAM table and the space required for the table exceeds what is allowed by the internal pointer size. MyISAM creates tables to allow up to 4GB by default, but this limit can be changed up to the maximum allowable size of 65,536TB (2567 – 1 bytes).
If you need a MyISAM table that is larger than the default limit and your operating system supports large files, the CREATE TABLE statement supports AVG_ROW_LENGTH and MAX_ROWS options. See Section 13.1.5, "CREATE TABLE Syntax". The server uses these options to determine how large a table to allow.
If the pointer size is too small for an existing table, you can change the options with ALTER TABLE to increase a table's maximum allowable size. See Section 13.1.2, "ALTER TABLE Syntax".
ALTER TABLE tbl_name MAX_ROWS=1000000000 AVG_ROW_LENGTH=nnn;

You have to specify AVG_ROW_LENGTH only for tables with BLOB or TEXT columns; in this case, MySQL can't optimize the space required based only on the number of rows.
To change the default size limit for MyISAM tables, set the myisam_data_pointer_size, which sets the number of bytes used for internal row pointers. The value is used to set the pointer size for new tables if you do not specify the MAX_ROWS option. The value of myisam_data_pointer_size can be from 2 to 7. A value of 4 allows tables up to 4GB; a value of 6 allows tables up to 256TB.

Dies war der kostenlose MySQL Handbuchvorlesedienst.

Eine interaktive Version dieses Dienstes kann gegen Gebühr bei http://mysql.com/support bezogen werden. :)

mr_vista
Posts: 57
Joined: 2006-08-01 22:33
Location: Berlin

Re: maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by mr_vista » 2007-01-09 21:07

yeah Danke das wirds sein! :) ... die von dir kostenlos vorgelesene Information habe ich sonst nirgends gefunden! vielen Dank :)
Ich werde das die Tage testen und hier dann berichten obs geklappt hat!

lg

mr_vista
Posts: 57
Joined: 2006-08-01 22:33
Location: Berlin

Re: maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by mr_vista » 2007-01-30 20:01

Hallo!

aaaaalso hab jetzt rumprobiert und mit "myisam_data_pointer_size" bin ich nicht weitergekommen. Habe die Variable in my.cnf auf 6 gesetzt, aber nach Neustart konnte auch keine neu erstellte Tabelle größer als 4GB werden.

Folgendes führt jedoch zu Erfolg. Es kann beim CREATE wie auch beim ALTER - Sytnax verwendet werden.

Code: Select all

ALTER TABLE testtabelle MAX_ROWS=1000000000 AVG_ROW_LENGTH=999
Nun werden die Tabellen auch bei MySql 4.1x größer als 4GB ... auf meiner lokalen Umgebung habe ich MySql 5, dort konnten die Tabellen ohne Probleme größer als 4GB werden.

Danke für die Hilfe und Gruß!

User avatar
isotopp
Posts: 471
Joined: 2003-08-21 10:21
Location: Berlin

Re: maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by isotopp » 2007-01-30 22:38

Mr_Vista wrote:Nun werden die Tabellen auch bei MySql 4.1x größer als 4GB ... auf meiner lokalen Umgebung habe ich MySql 5, dort konnten die Tabellen ohne Probleme größer als 4GB werden.
Dort ist die Data Pointer Size auch per Default 6.

Code: Select all

linux:/export/data/rootforum # mysql-3340
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 4 to server version: 5.0.26-max-log

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

root@localhost [(none)]> show global variables like "%pointer%";
+--------------------------+-------+
| Variable_name            | Value |
+--------------------------+-------+
| myisam_data_pointer_size | 6     |
+--------------------------+-------+
1 row in set (0.00 sec)

mr_vista
Posts: 57
Joined: 2006-08-01 22:33
Location: Berlin

Re: maximale Tabellengröße 4 Gigabyte - woran liegts?

Post by mr_vista » 2007-01-30 23:17

ich weiss, steht in der mysql 5 doku :) (habs gelesen, gut ne!) :)