無料Wikiサービス | デモページ
Linuxなどのメモ書き
検索

Adsense

MySQL テーブルサイズの上限 の差分
Rev.1→Rev.2  追加箇所 削除箇所


MySQLのMyISAMテーブルではオプションを指定せずにテーブルを作成するとサイズの上限は4GBとなる(*1)。

(*1) ファイルシステムの仕様でファイルサイズの上限により4GBまで使えない場合もある。

テーブルサイズの上限の表示

テーブルサイズの上限は'SHOW TABLE STATUS''SHOW TABLE STATUS'で表示できる。Max_data_lengthのカラムがテーブルサイズの上限値。データベース、テーブル名を指定して表示したい場合は、SHOW TABLE STATUS FROM DB LIKE 'テーブル'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)