MySQL 8 InnoDB Table 和 Page 压缩
压缩用一点CPU换取磁盘IO、内存空间、磁盘空间。
在有Secondary Indexes 的表中,使用压缩更加明显,相关索引数据也会压缩。
InnoDB 表压缩
对表压缩只需要在Create Table 时指定ROW_FORMAT=Compressed即可。
压缩的行格式不适用于InnoDB 系统表空间,这也可能就是为什么@@innodb_default_row_format不能指定为compressed的原因吧。
key_block_size 选项:指定磁盘上Table 的Page Size。较小的值需要的IO也会比较小。但是过小,可能导致单个Page不能保存多行,InnoDB需要重新组织Page。而且Key Block Size 值受到Table 上Index 列的硬性要求。
Key Block Size 的指定,在Buffer Pool 中也需要相应的Page Size 缓存。在InnoDB Buffer Pool中,提取或者更新compressed Page需要先uncompressed Page,在更新UnCompressed Page 后,还需要写回到 Compressed Page中。这里会出现一种情况,Buffer Pool 中保存同一个Page的两种形式:Compressed 和 UnCompressed。如果Buffer Pool 需要空间,会删除UnCompressed Pages,在需要时,再次 UnCompressed Pages。
Key Block Size的大小对于Compress Level没有影响,他只是设置了Page的大小。
是否做表压缩主要是依赖表中数据:
包含字符串、重复值、这样压缩效果才会有。因为InnoDB基于Page来压缩数据,如果没有重复值,或者binary 数据类型(数值型),压缩意义也就不大了。
有两个可选的方法测试表的压缩是否具有可行性:
使用OS压缩工具,比如gzip压缩表,可以大致对比使用MySQL压缩的情况。
创建待压缩表的复制表,压缩复制表。
简单查看压缩效果,对于系统中只有一张压缩表:
select * from information_schema.innodb_cmp;
MySQL 8 InnoDB Table 和 Page 压缩的更多相关文章
- MySQL 5.6 Reference Manual-14.7 InnoDB Table Compression
14.7 InnoDB Table Compression 14.7.1 Overview of Table Compression 14.7.2 Enabling Compression for a ...
- MySQL 5.6 Reference Manual-14.6 InnoDB Table Management
14.6 InnoDB Table Management 14.6.1 Creating InnoDB Tables 14.6.2 Moving or Copying InnoDB Tables to ...
- mysql的innodb数据库引擎详解
http://www.jb51.net/softjc/158474.html 这篇文章主要介绍了mysql的innodb数据库引擎,需要的朋友可以参考下 一.mysql体系结构和存储引擎 1. ...
- MySQL数据库InnoDB存储引擎多版本控制(MVCC)实现原理分析
文/何登成 导读: 来自网易研究院的MySQL内核技术研究人何登成,把MySQL数据库InnoDB存储引擎的多版本控制(简称:MVCC)实现原理,做了深入的研究与详细的文字图表分析,方便大家理解I ...
- MySQL数据库InnoDB存储引擎中的锁机制
MySQL数据库InnoDB存储引擎中的锁机制 http://www.uml.org.cn/sjjm/201205302.asp 00 – 基本概念 当并发事务同时访问一个资源的时候,有可能 ...
- (转)mysql、innodb和加锁分析
mysql.innodb和加锁分析 原文:https://liuzhengyang.github.io/2016/09/25/mysqlinnodb/ 介绍 本文主要介绍MySQL和InnoDB存储引 ...
- Recovering InnoDB table from an .ibd file.
Recovering an InnoDB table from only an .ibd file. Sometime you may need to recover a table when all ...
- 重新学习MySQL数据库2:『浅入浅出』MySQL 和 InnoDB
重新学习Mysql数据库2:『浅入浅出』MySQL 和 InnoDB 作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL.P ...
- 『浅入浅出』MySQL 和 InnoDB
作为一名开发人员,在日常的工作中会难以避免地接触到数据库,无论是基于文件的 sqlite 还是工程上使用非常广泛的 MySQL.PostgreSQL,但是一直以来也没有对数据库有一个非常清晰并且成体系 ...
随机推荐
- keras模型可视化
#keras.utils.vis_utils模块提供了画出Keras模型的函数(keras版本2.0.2以上)pip install graphviz pip install pydotplus im ...
- PKU-3580 SuperMemo(Splay模板题)
SuperMemo 题目链接 Your friend, Jackson is invited to a TV show called SuperMemo in which the participan ...
- Exception | java.security.NoSuchProviderException: no such provider: BC
背景 今天在用PGP key做JWT签名和验签的时候,转换报了如下错误: org.bouncycastle.openpgp.PGPException: exception on setup: java ...
- 家用联通光纤开启IPv6
前提是地区运营商支持提供IPv6地址,并且是用联通光猫进行拨号上网. 原文在我的开源中国博客 https://my.oschina.net/finchxu/blog/3165614 注意,阅读以下内容 ...
- jmeter新手学习笔记(一)
使用jmeter做接口测试--设置线程组 1.创建线程组 2.设置线程数配置信息 线程组:常用于模拟并发用户访问,例如需要100个用户访问该接口,线程数则设置为100 Ramp-Up Period:决 ...
- [flask]邮件配置-20171227
环境变量配置: # PowerShell设置环境变量: $env:MAIL_USERNAME = "" $env:MAIL_PASSWORD = "" 国内: ...
- [python]bytes和str
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04) [GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] ...
- PTA 7-9 集合相似度(STL之set初体验)
7-9 集合相似度(25 分) 给定两个整数集合,它们的相似度定义为:Nc/Nt×100%.其中Nc是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数.你 ...
- python笔记带你走向测试开发之路-第一篇(数据类型之数字,序列)
数字 数字的类型 数字是 Python中比较常用的数据类型,数字有可以分为: 整型 int如 1,2,3 浮点型 float如 2.1,3.5 长整型 long如 3L,需要注意的是 Python2. ...
- json-server的简单使用
json-server是一个在前端本地运行,可以存储json数据的server(服务器),该服务器只支持 get 方法获取,不支持 post 方法获取,使用express工具可以使用post方法. V ...