2015年8月4日火曜日

MySQL 5.7.8 透過InnoDBページ圧縮のサイズ計り比べ…の前に、取り敢えず有効化するところまで

今までのInnoDB圧縮(ROW_FORMAT= Compress)は InnoDBテーブル圧縮 、新しいやつは InnoDBページ圧縮 としてドキュメントに載っている。

今までのInnoDBテーブル圧縮はzlibのみの対応で、圧縮後のデータの詰め直しなども全部InnoDB側で対応していた。そのデータの詰め直しをファイルシステム側に任せることで、CPUバウンドだった圧縮処理を軽く/圧縮効率を良くしよう、というアレだと認識している。
詳しくはこちら。 InnoDB Transparent PageIO Compression | MySQL Server Blog


CentOS 6.6(2.6.32-504.30.3.el6.x86_64)のext4ではsupport not availableと言われるのが

$ less /var/log/mysqld.log
..
2015-07-22T09:23:24.769459Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.8-rc-log) starting as process 403 ...
2015-07-22T09:23:24.774797Z 0 [Note] InnoDB: PUNCH HOLE support not available
..


CentOS 7.1(3.10.0-229.el7.x86_64)のxfsだとちゃんと有効になっているぽい。

$ less /var/log/mysqld.log
..
2015-07-22T09:21:44.321951Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.8-rc) starting as process 3355 ...
2015-07-22T09:21:44.326762Z 0 [Note] InnoDB: PUNCH HOLE support available
..


$ mysql -sse "show tables" tpcc | while read table ; do
> mysql -e "ALTER TABLE $table Compression= 'zlib'"
> done

mysql> SHOW TABLE STATUS\G
*************************** 1. row ***************************
           Name: customer
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2015-07-22 18:45:09
    Update_time: NULL
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: COMPRESS="zlib"
        Comment:
..

Create_options: COMPRESS="zlib"になった。



20WH突っ込んでみたところ。


無圧縮。

$ ll -h
total 1.8G
-rw-r----- 1 mysql mysql 9.2K Jul 22 19:34 customer.frm
-rw-r----- 1 mysql mysql 392M Jul 22 19:33 customer.ibd
-rw-r----- 1 mysql mysql   65 Jul 22 19:24 db.opt
-rw-r----- 1 mysql mysql 8.8K Jul 22 19:34 district.frm
-rw-r----- 1 mysql mysql  96K Jul 22 19:32 district.ibd
-rw-r----- 1 mysql mysql 8.7K Jul 22 19:34 history.frm
-rw-r----- 1 mysql mysql  72M Jul 22 19:34 history.ibd
-rw-r----- 1 mysql mysql 8.5K Jul 22 19:24 item.frm
-rw-r----- 1 mysql mysql  17M Jul 22 19:24 item.ibd
-rw-r----- 1 mysql mysql 8.5K Jul 22 19:34 new_orders.frm
-rw-r----- 1 mysql mysql  13M Jul 22 19:33 new_orders.ibd
-rw-r----- 1 mysql mysql 8.8K Jul 22 19:34 order_line.frm
-rw-r----- 1 mysql mysql 572M Jul 22 19:34 order_line.ibd
-rw-r----- 1 mysql mysql 8.7K Jul 22 19:34 orders.frm
-rw-r----- 1 mysql mysql  48M Jul 22 19:33 orders.ibd
-rw-r----- 1 mysql mysql 9.0K Jul 22 19:34 stock.frm
-rw-r----- 1 mysql mysql 692M Jul 22 19:33 stock.ibd
-rw-r----- 1 mysql mysql 8.7K Jul 22 19:24 warehouse.frm
-rw-r----- 1 mysql mysql  96K Jul 22 19:32 warehouse.ibd


InnoDBページ圧縮(zlib)。

$ ll -h
total 1.3G
-rw-r----- 1 mysql mysql 9.2K Jul 22 19:15 customer.frm
-rw-r----- 1 mysql mysql 392M Jul 22 19:14 customer.ibd
-rw-r----- 1 mysql mysql   65 Jul 22 18:42 db.opt
-rw-r----- 1 mysql mysql 8.8K Jul 22 19:15 district.frm
-rw-r----- 1 mysql mysql  96K Jul 22 19:05 district.ibd
-rw-r----- 1 mysql mysql 8.7K Jul 22 19:15 history.frm
-rw-r----- 1 mysql mysql  72M Jul 22 19:15 history.ibd
-rw-r----- 1 mysql mysql 8.5K Jul 22 18:45 item.frm
-rw-r----- 1 mysql mysql  17M Jul 22 18:56 item.ibd
-rw-r----- 1 mysql mysql 8.5K Jul 22 19:15 new_orders.frm
-rw-r----- 1 mysql mysql  13M Jul 22 19:05 new_orders.ibd
-rw-r----- 1 mysql mysql 8.8K Jul 22 19:15 order_line.frm
-rw-r----- 1 mysql mysql 564M Jul 22 19:15 order_line.ibd
-rw-r----- 1 mysql mysql 8.7K Jul 22 19:15 orders.frm
-rw-r----- 1 mysql mysql  48M Jul 22 19:14 orders.ibd
-rw-r----- 1 mysql mysql 9.0K Jul 22 19:15 stock.frm
-rw-r----- 1 mysql mysql 692M Jul 22 19:14 stock.ibd
-rw-r----- 1 mysql mysql 8.7K Jul 22 18:45 warehouse.frm
-rw-r----- 1 mysql mysql  96K Jul 22 19:04 warehouse.ibd


すいません性能とか圧縮率とかまだ真面目に調べられてますん><

0 件のコメント :

コメントを投稿