前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云企业级MySQL(CDB)-列压缩特性

腾讯云企业级MySQL(CDB)-列压缩特性

作者头像
腾讯数据库技术
发布2021-08-19 10:40:28
8680
发布2021-08-19 10:40:28
举报
文章被收录于专栏:腾讯数据库技术

本文以视频+文字放送,为你带来腾讯云企业级MySQL-列压缩特性

【需求背景】

当前MySQL有针对行格式级别以及数据库页面级别的压缩,这两种压缩方式在处理一个表,同时有大字段和其它很多小字段,并且针对小字段的读写访问频繁,对大字段的访问不频繁的场景中,它的读写访问都会压缩和解压数据,这造成许多不必要的计算资源浪费。

腾讯云企业级MySQL(CDB)运用列压缩功能来压缩访问不频繁的大字段,同时能够减少整行字段的存储空间,进而提高整体读写访问的效率。

例如一张员工表,前面三个字段分别表示员工 id、年龄以及性别,第四个字段other是大字段,表示员工的其它数据。当对前面三个字段访问频繁,对第四个字段访问频率较低时,可以将第四个字段other设置为压缩列。这样,对其它列的访问,并不会触发该列的压缩和解压,对大字段压缩之后,整体的数据量更小,因而能提高对其它小字段的访问效率。

【创建语法】

创建表时,在列类型的后面添加 compressed 关键字或者 compressed=zlib 关键词,表示该列是一个压缩列,在使用上这两种语法是等价的。

  • t1:没有压缩列;
  • t2:有压缩列;针对data字段增加压缩属性关键字 compressed (compressed=zlib)

下面使用这两种方式来演示,如何创建一张带有压缩列的表,作为对比,我们首先创建一张没有压缩列的表 t1。在 t1 这张表中,id 字段是小字段,data 字段是大字段并且访问频率较低。下面我们针对 data字段加一个压缩属性,创建表 t2。创建 t2 表,在data字段后面指定一个压缩属性关键字compressed,也可以显示另外的一种语法方式,显示compressed=zlib 关键字,在使用上这两种方式是相互等价。目前只提供对 blob,text,varbinary,varchar 这四种类型的压缩,且只支持 zlib 的压缩算法。

【压缩效率演示】

上面介绍完如何创建压缩表后,接下来将演示压缩列的压缩效率以及部分场景下访问速度的提升。

首先准备一张约有180多万行的表t0,通过 show table status,可以看到t0表平均行的长度大约是2,050个 字节,数据量是3个G左右。先简单地看看这张表里面的内容,这里是为了演示方便准备的表 ,其数据冗余度非常高,在实际环境中一般不会有这样的数据。

  • 导入t0表数据

将t0表的数据,导入到之前创建的没有压缩列的 t1表以及有压缩列的 t2表中。t2 表的数据导入会比较慢,因为在数据导入的过程中会有一个压缩的阶段。

  • 对比 t1 和 t2 数据量大小

利用show table status对比 t1表和 t2表两张表的数据量大小。看Data_Length这一列,可以看到,压缩后t2表的数据量大约是未压缩t0表的1/33,并且它平均行的长度大约是未压缩的t1表的1/40。当然,在实际生产环境中的压缩效果还是要取决于具体的数据。这只是在演示环境下,数据冗余度非常高所达到的效果。

  • 访问速度的提升

接下来对比列压缩对select count(*) 查询速度的提升。首先对没有压缩列的t1表执行行数的统计,可以看到花了大约2.69秒;然后对t2表也执行关于行数的统计,可以看到执行得非常快,只花了0.26秒。可以看到t1表和t2表统计的结果是一样的,但是在压缩后t2表统计的速度更快,并且t2表的内容和t0表的内容是一致的。(统计执行速度快,内容一致)

列压缩功能实际上是来源于IEG团队的贡献,腾讯数据库技术团队把这个特性放到腾讯云数据库5.7版本里面,为广大腾讯云用户提供服务,欢迎大家尝试使用这个功能,谢谢大家!

腾讯数据库技术团队对内支持QQ空间、微信红包、腾讯广告、腾讯音乐、腾讯新闻等公司自研业务,对外在腾讯云上依托于CBS+CFS的底座,支持TencentDB相关产品,如CynosDB、CDB、CTSDB、MongoDB、CES等。腾讯数据库技术团队专注于持续优化数据库内核和架构能力,提升数据库性能和稳定性,为腾讯自研业务和腾讯云客户提供“省心、放心”的数据库服务。此公众号旨在和广大数据库技术爱好者一起推广和分享数据库领域专业知识,希望对大家有所帮助。

↓ ↓ 点击【阅读原文】可查看腾讯云企业级MySQL产品详情页

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯数据库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例如一张员工表,前面三个字段分别表示员工 id、年龄以及性别,第四个字段other是大字段,表示员工的其它数据。当对前面三个字段访问频繁,对第四个字段访问频率较低时,可以将第四个字段other设置为压缩列。这样,对其它列的访问,并不会触发该列的压缩和解压,对大字段压缩之后,整体的数据量更小,因而能提高对其它小字段的访问效率。
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档