InnoDB创建数据压缩页
来源:互联网 发布:张纪中版神雕侠侣 知乎 编辑:程序博客网 时间:2024/06/15 01:53
从MySQL5.5版本开始支持InnoDB数据页压缩,数据页的压缩使数据文件体积变小,减少磁盘I/O,提高吞吐量,小成本地提高了CPU利用率。尤其是对读多写少的应用来说最为有效,同样的内存可以存储更多的数据,充分地“榨干”内存利用率。
工作原理:当用户获取数据时,如果压缩的页没有在缓冲池中,那么就会从磁盘加载进去,并且会在缓冲池里开辟一个新的未压缩的16KB的数据页来解压缩,为了减少磁盘I/O以及对页的解压操作,在缓冲池里同时存在被压缩和未被压缩的页。为了给其他需要的数据页腾出空间,缓冲池会把未压缩的数据页踢出,而保留压缩页在内存中,如果未压缩的页在一段时间内没有被访问,那么会直接写入磁盘中,因此缓冲池中可能有压缩和未压缩的页,也可能只有压缩页。
InnoDB采用LRU(最近最少使用)算法,将经常被访问的热数据放入内存里。当访问一个压缩表时,InnoDB会通过自适应的LRU算法来实现内存中压缩页和未压缩页的平衡。其目的是避免当CPU繁忙时花费太多的时间在解压缩上,也是为了避免在CPU空闲时在解压缩操作上做过多的I/O操作。所以,当系统处于I/O瓶颈时,这个算法会踢出未压缩的页,而不是未压缩和压缩的页,从而为更多的页注入内存腾出空间。而当系统处于CPU瓶颈时,这个算法会同时踢出未压缩的页和压缩的页,留出更多的内存来存放热数据,减少解压缩带来的开销。
一个数据页是16KB,现在可以在建表时指定压缩页是1KB、2KB、4KB或8KB,如果设置过小,会导致消耗更多CPU,通常设置为8KB。
必须采用Barracuda文件格式且独立表空间,才支持数据页压缩,如下所示:
innodb_file_format=Barracuda
innodb_file_per_table=1
要设置数据页为8KB,在建表的时候加入ROW_FORMAT=COMPRESSEDKEY_BLOCK_SIZE=8即可,代码如下:
- InnoDB创建数据压缩页
- mysql innodb 表数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 数据压缩
- 创建HIVE的rcfile数据压缩表
- 创建HIVE的rcfile数据压缩表
- 从Hibernate创建InnoDB表
- mysql innodb创建数据文件失败
- innodb purge线程的创建
- 14.6.1 Creating InnoDB Tables 创建InnoDB 表:
- 我对消息中间件的理解
- 4-9汽车加油问题
- android开发java工具包的添加方式
- Hadoop2.4.1学习笔记(二)之hdfs文件系统学习
- Sexy Beach PR 汉化补丁+新手教程
- InnoDB创建数据压缩页
- C#大框架小要素
- SQL语句,数据库的创建、定义修改删除基本表
- php学习日记第十棒(switch 语句)
- Android NDK开发(一)HelloWorld
- 【C++】深度探索C++对象模型之执行期语意学
- xUtils中的HttpUtils请求网络数据和BitmapUtils加载网络图片
- 《TCP/IP详解 卷1:协议》 读书笔记 第23章 TCP的保活定时器
- Codeforces Round #336 (Div. 1) D. Power Tree