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,但是一直以来也没有对数据库有一个非常清晰并且成体系 ...
随机推荐
- 每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)(条件构造器)
每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转 ...
- # 团队项目-Beta冲刺2(七个小矮人)
团队项目-Beta冲刺2(七个小矮人) 一.格式描述 这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScien ...
- 个人第四次作业Alpha2版本测试
个人第四次作业Alpha2版本测试 这个作业属于哪个课程 软件工程 这个作业要求在哪里 作业要求 团队名称 GP工作室 这个作业的目标 对其他小组的项目进行测试 测试人员 陈杰 学号 20173102 ...
- djgango装饰器
from django.http import HttpResponse from django.views import View class MyView(View): def get(self, ...
- Java 设计模式之工厂模式
工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻 ...
- 好机会,我要帮女同事解决Maven冲突问题
任何一个故事起因最重要 任何一个职业,女生都有绝对的优势.更别提IT行业了,在部门中要是有女程序猿那肯定是香饽饽,备受呵护呀. 之前有一次,一位刚来的妹子遇到问题了,画风顿时就变成上面的图片了,群起而 ...
- JsonCpp中文unicode编码问题
用JsonCpp解析C++中文unicode编码,转换问题,今天找打了一种解决办法 这个问题画了不少时间,贴出来供大家参考 在json_reader.cpp中找到codePointToUTF8函数,添 ...
- java设计模式3——建造者模式
java设计模式3--建造者模式 1.建造者模式介绍: 建造者模式属于创建型模式,他提供了一种创建对象得最佳方式 定义: 将一个复杂对象的构建和与它的表示分离,使得同样的构建过程可以创建不同的表示 主 ...
- Cheat sheet PySpark SQL Python(PySpark 速查表)
- 行人重识别和车辆重识别(ReID)中的评测指标——mAP和Rank-k
1.mAP mAP的全称是mean Average Precision,意为平均精度均值(如果按照原来的顺利翻译就是平均均值精度).这个指标是多目标检测和多标签图像分类中长常用的评测指标,因为这类任务 ...