400 028 6601

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

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

今天小编给大家分享一下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中如何进行大文本存储压缩”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注创新互联行业资讯频道。


本文名称:MySQL中如何进行大文本存储压缩
转载来源:http://mbwzsj.com/article/jeiooj.html

其他资讯

让你的专属顾问为你服务