MySQL テーブルサイズの上限
Rev.2を表示中。最新版はこちら。
MySQLのMyISAMテーブルではオプションを指定せずにテーブルを作成するとサイズの上限は4GBとなる(*1)。
(*1) ファイルシステムの仕様でファイルサイズの上限により4GBまで使えない場合もある。
テーブルサイズの上限の表示
テーブルサイズの上限は'SHOW TABLE STATUS'で表示できる。Max_data_lengthのカラムがテーブルサイズの上限値。データベース、テーブル名を指定して表示したい場合は、SHOW TABLE STATUS FROM DB名 LIKE 'テーブル名'で表示できる。
mysql> SHOW TABLE STATUS FROM test LIKE 'sample' \G
*************************** 1. row ***************************
Name: sample
Engine: MyISAM
Version: 9
Row_format: Dynamic
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 4294967295
Index_length: 1024
Data_free: 0
Auto_increment: 1
Create_time: 2006-10-03 15:08:20
Update_time: 2006-10-03 15:08:20
Check_time: NULL
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
上限を指定してテーブルを作る
既存のテーブルのサイズ上限を変更する
既存のテーブルのサイズ上限を変更する場合は、ALTER TABLE テーブル名 MAX_ROWS=<最大レコード数>, AVG_ROW_LENGTH=<レコードの平均長>で設定できる。テーブルサイズの上限はMAX_ROWS*AVG_ROW_LENGTHによって計算される。
以下は20GB(MAX_ROWS=500000*AVG_ROW_LENGTH=40000)に設定する例。既にテーブルサイズが大きくなっている場合は、実行に時間がかかる。
mysql> SHOW TABLE STATUS FROM Contents LIKE 'tst_tbl' \G
*************************** 1. row ***************************
Name: tst_tbl
Engine: MyISAM
Version: 9
Row_format: Dynamic
Rows: 188558
Avg_row_length: 22777
Data_length: 4294967264
Max_data_length: 4294967295
Index_length: 4639744
Data_free: 0
Auto_increment: 188559
Create_time: 2006-09-29 20:41:41
Update_time: 2006-10-03 12:30:46
Check_time: 2006-09-29 20:44:44
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.00 sec)
mysql> ALTER TABLE tst_tbl MAX_ROWS=500000, AVG_ROW_LENGTH=40000;
Query OK, 188435 rows affected (4 min 21.11 sec)
Records: 188435 Duplicates: 0 Warnings: 0
mysql> SHOW TABLE STATUS FROM Contents LIKE 'tst_tbl' \G
*************************** 1. row ***************************
Name: tst_tbl
Engine: MyISAM
Version: 9
Row_format: Dynamic
Rows: 188435
Avg_row_length: 22776
Data_length: 4291895168
Max_data_length: 1099511627775
Index_length: 5040128
Data_free: 0
Auto_increment: 188559
Create_time: 2006-10-03 14:43:31
Update_time: 2006-10-03 14:46:40
Check_time: 2006-10-03 14:47:46
Collation: utf8_general_ci
Checksum: NULL
Create_options: max_rows=500000 avg_row_length=40000
Comment:
1 row in set (0.01 sec)
