MySQL中大字段列压缩

本文介绍了在MySQL中针对大字段进行压缩的需求和解决方案。通过使用内置的COMPRESS和UNCOMPRESS函数,对存储JSON长字符串的longtext字段进行压缩,有效降低了存储空间,压缩率高达80~90%。在JDBC中也能顺利进行存取操作,经过压缩,表空间节省了约80%,显著优化了数据库性能。
摘要由CSDN通过智能技术生成

最近MySQL遇到一个表,其中有一个字段是存储计算模型的所有值,是一个JSON长字符串,存储为longtext,基本每一个都有100k左右(正常不压缩的情况),表行数不到百万,却占空间几十G,于是想着MySQL能够对专门的表字段进行压缩,经过查询发现,MySQL自带压缩和解压缩函数

  • 压缩
    使用函数COMPRESS :COMPRESS(COL)即可,如下图,是一个测试压缩的一列。压缩后列格式为blob格式BLOB字段用于存储二进制数据,是一个可以存储大量数据的容器),压缩率能达到80~90%
select id,compress(info)  from table

在这里插入图片描述

  • 解压
    使用函数UNCOMPRESS :UNCOMPRESS(col)即可,由于被压缩后代额格式是blob,那么解压后的格式也为blob,还得转换一层才能查看的到,如下所示:
select id,compress(info),uncompress(compress(info)) ,cast(uncompress(compress(info)) as char) from table 

在这里插入图片描述

  • 在JDBC中存取解压缩
    在SQL中可以搞定,压缩后转换。接下来
	private static void insert () throws SQLException, IOException {
   
       List<MyBlob> blobs=new ArrayList<MyBlob>
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值