innodb表压缩
2016-05-22 17:21
531 查看
表压缩能提升性能,减少存储空间,主要是用在包含很多字符的表上,并且读要比写多的情况下,也就是在数据仓库的情况下应用居多
在使用表压缩的功能时候, innodb_file_per_table这个参数要启用,innodb_file_format这个参数设置成Barracuda,对比下看看效果
CREATE TABLE
)ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=8 ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into compressed_tab select * from uncompressed_tab;
查看ibd文件的大小
存储基本上是小了1半以上
mysql> select count(*) from compressed_tab;
+———-+
| count(*) |
+———-+
| 1693440 |
+———-+
1 row in set (5.02 sec)
mysql> select count(*) from uncompressed_tab;
+———-+
| count(*) |
+———-+
| 1693440 |
+———-+
1 row in set (6.63 sec)
查询同样数量大概少了近2秒,提升效果还是很明显的
可以使用innodb_compression_level 这个参数来控制压缩率,mysql使用了 LZ77算法来压缩数据,
In an InnoDB table, BLOB, VARCHAR, and TEXT columns that are not part of the primary key may be stored on separately allocated overflow pages. We refer to these columns as off-page columns. Their values are stored on singly-linked lists of overflow pages.
在使用表压缩的功能时候, innodb_file_per_table这个参数要启用,innodb_file_format这个参数设置成Barracuda,对比下看看效果
CREATE TABLE
compressed_tab(
TABLE_CATALOGvarchar(512) NOT NULL DEFAULT ”,
TABLE_SCHEMAvarchar(64) NOT NULL DEFAULT ”,
TABLE_NAMEvarchar(64) NOT NULL DEFAULT ”,
TABLE_TYPEvarchar(64) NOT NULL DEFAULT ”,
ENGINEvarchar(64) DEFAULT NULL,
VERSIONbigint(21) unsigned DEFAULT NULL,
ROW_FORMATvarchar(10) DEFAULT NULL,
TABLE_ROWSbigint(21) unsigned DEFAULT NULL,
AVG_ROW_LENGTHbigint(21) unsigned DEFAULT NULL,
DATA_LENGTHbigint(21) unsigned DEFAULT NULL,
MAX_DATA_LENGTHbigint(21) unsigned DEFAULT NULL,
INDEX_LENGTHbigint(21) unsigned DEFAULT NULL,
DATA_FREEbigint(21) unsigned DEFAULT NULL,
AUTO_INCREMENTbigint(21) unsigned DEFAULT NULL,
CREATE_TIMEdatetime DEFAULT NULL,
UPDATE_TIMEdatetime DEFAULT NULL,
CHECK_TIMEdatetime DEFAULT NULL,
TABLE_COLLATIONvarchar(32) DEFAULT NULL,
CHECKSUMbigint(21) unsigned DEFAULT NULL,
CREATE_OPTIONSvarchar(255) DEFAULT NULL,
TABLE_COMMENTvarchar(2048) NOT NULL DEFAULT ”
)ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=8 ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into compressed_tab select * from uncompressed_tab;
查看ibd文件的大小
存储基本上是小了1半以上
mysql> select count(*) from compressed_tab;
+———-+
| count(*) |
+———-+
| 1693440 |
+———-+
1 row in set (5.02 sec)
mysql> select count(*) from uncompressed_tab;
+———-+
| count(*) |
+———-+
| 1693440 |
+———-+
1 row in set (6.63 sec)
查询同样数量大概少了近2秒,提升效果还是很明显的
可以使用innodb_compression_level 这个参数来控制压缩率,mysql使用了 LZ77算法来压缩数据,
In an InnoDB table, BLOB, VARCHAR, and TEXT columns that are not part of the primary key may be stored on separately allocated overflow pages. We refer to these columns as off-page columns. Their values are stored on singly-linked lists of overflow pages.
相关文章推荐
- Windows下的绿色版MySQL配置与启动
- Mysql 基础语法
- mysql外键(FOREIGN KEY)的简单使用
- 一天一点MySQL复习——存储过程
- 在Dos下初步使用MySQL
- MySql 中文乱码
- MySql 中文乱码
- MySQL数据类型
- MySQL for MAC 重置root密码
- mysql批量导入,导出
- 【Mysql sql inject】【入门篇】SQLi-Labs使用 part 1【01-11】
- mysql 中的语法执行顺序
- Windows10 64位安装解压版mysql-5.7.12-winx64的错误总结- MySQL服务无法启动
- 用批处理启动MySQL命令行工具
- 常用mysql数据库引擎——MyISAM和InnoDB区别
- mysql学习总结
- MYSQ系列-MYSQL基础增强(Mysql基本语句)
- MySQL基本操作命令
- 3.1 mysql客户端工具
- Mysql在高并发情况下,防止库存超卖而小于0的解决方案