今までの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 件のコメント :
コメントを投稿