MySQL中如何进行大文本存储压缩

发布时间:2023-02-03 09:48:23 作者:iii
来源:亿速云 阅读:132

今天小编给大家分享一下MySQL中如何进行大文本存储压缩的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

存量数据分析

select
  table_name as '表名',
  table_rows as '记录数',
  truncate(data_length/1024/1024, 2) as '数据容量(MB)',
  truncate(index_length/1024/1024, 2) as '索引容量(MB)',
  truncate(DATA_FREE/1024/1024, 2) as '碎片占用(MB)'
from
  information_schema.tables
where
  table_schema=${数据库名}
order by
  data_length desc, index_length desc;

MySQL中如何进行大文本存储压缩MySQL中如何进行大文本存储压缩

相关内容介绍

innodb引擎页数据超出16kb怎么办?

我们都知道innodb的页块默认大小为16k,如果表中一行数据长度超出了16k,就会出现行溢出,溢出的行是存放在另外的地方(uncompress blob page)。由于innodb采用聚簇索引把数据进行存放起来,即B+Tree结构,因此每个页块中至少有两行数据,否则就失去了B+Tree的意义,这样就得出一行数据最大的长度限制为8k(大字段在数据页会存储768个字节数据,剩余的数据溢出到另外的页中,数据页还有20个字节记录溢出页的地址)

Linux 稀疏文件 & 空洞

文件空洞部分不占用磁盘空间、文件所占用的磁盘空间仍然是连续的

innodb提供的压缩方案

页面压缩

适用场景:由于数据量太大,磁盘空间不足,负载主要体现在IO上,而服务器的CPU又有比较多的余量的场景。

1)COMPRESS页压缩

相关文档:dev.mysql.com/doc/refman/…

2)TPC(透明页压缩)

MySQL中如何进行大文本存储压缩

列压缩

MySQL目前没有直接针对列压缩的方案,有一个曲线救国的方法,就是在业务层使用MySQL提供的压缩和解压函数来针对列进行压缩和解压操作。也就是如果需要对某一列做压缩,在写入时调用COMPRESS函数对那个列的内容进行压缩,读取的时候,使用UNCOMPRESS函数对压缩过的数据进行解压。

MySQL中如何进行大文本存储压缩

为什么innodb提供的都是基于页面的压缩技术?

总结

为什么要进行数据压缩?

简单测试

innodb透明页压缩(TPC)

测试数据

1)创建表
2)往表中写入10w行测试数据

压缩率

SELECT NAME, FS_BLOCK_SIZE, FILE_SIZE, ALLOCATED_SIZE
FROM information_schema.INNODB_TABLESPACES WHERE NAME like 'test_compress%';

MySQL中如何进行大文本存储压缩

压缩率:

耗时

以上就是“MySQL中如何进行大文本存储压缩”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. numa 架构下mysql可能遭遇的swap问题
  2. Zabbix 2.2安装MySQL MPM插件时报错'Connection to zabbix server failed (rc=1305)'怎么处理

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:Node中的可读流是什么

下一篇:php时区不正确如何解决

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》