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)