MySQLでレコード平均長を変更する

MySQL > MySQLでレコード平均長を変更する

データベースカラム追加データ型変更を行った場合など、レコードサイズに応じて変更が必要になる場合があります。

レコードサイズの計算を行う必要はなく、既にmysqlではレコード平均長が参照できる下記コマンドが用意されています。

mysqlコマンドラインで下記のコマンドを実行します。

show table status from database1 like 'table1';

database1データベースのtable1テーブルの場合。

「Avg_row_length」の値がレコード平均長になります。

レイアウトの関係で参照しづらい場合は、同様にmysqlコマンドラインから下記のスクリプトを実行してください。

データベース内に存在するテーブルすべてのデータを参照することができます。

予め「use データベース名」で対象のデータベースを選択しておく必要があります。

select
    table_name,
    engine,
    table_rows,
    avg_row_length,
    floor((data_length+index_length)) as all_Byte,  #総容量
    floor((data_length)) as data_Byte,  #データ容量
    floor((index_length)) as index_Byte   #インデックス容量
from
    information_schema.tables
where
    table_schema=database()
order by
    (data_length+index_length) desc;

「avg_row_length」の値がレコード平均長になります。

下記コマンドでレコード長の平均値を変更します。

ALTER TABLE table1 MAX_ROWS=10000000, AVG_ROW_LENGTH=34016;

上はtable1テーブルのレコード長の平均値を「34016」に変更する例です。