我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysql中如何进行数据压缩性能对比

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysql中如何进行数据压缩性能对比

这篇文章给大家分享的是有关mysql中如何进行数据压缩性能对比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

    1. 测试环境

    1.1 软硬件

    一台 64位 2.6.18-92 内核Linux开发机,4G内存,4个2800Mhz Dual-Core AMD Opteron(tm) Processor 2220 CPU。

    MySQL放在一块7200转SAT硬盘,未做raid

    MySQL未做任何优化, 关闭了query cache ,目的在于避免query cache对测试结果造成干扰。

    1.2 表结构

    2424753条记录,生产环境某一个分片的实际数据;

    分别建立了(partition_by1,idx_rank) 和 (partition_by1,chg_idx)的联合索引,其中 partition_by1为32长度的varchar类型 ,用于检索;其余两个字段均为浮点数,多用于排序;

    autokid作为子增列,充当PRIMARY KEY,仅作为数据装载时原子性保证用,无实际意义。

    2. 测试目的

    2.1 压缩空间对比

    压缩率越大,占用的磁盘空间越小,直接降低数据的存储成本;

    2.2 查询性能对比

    压缩后查询性能不应该有显著降低。Archive是不支持索引的,因此性能降低是必然的,那么我们也应该心里有个谱,到底降低了多少,能不能接受。

    3. 测试工具

    3.1 mysqlslap

    官方的工具当然是不二之选。关于mysqlslap的介绍请参考 官方文档 。

    3.2 测试query

    截取生产环境访问topranks_v3表的实际SQL共9973条,从中抽取访问量较大的7条,并发50,重复执行10次。命令如下:

    ./mysqlslap --defaults-file=../etc/my.cnf -u**** -p**** -c50 -i10 -q ../t.sql --debug-info

    4.测试结论

    比较项磁盘空间耗时(秒)CPU IdleLOAD并发
    基准表(MyISAM)4039560042.308301550
    ARCHIVE75630745>3007541
    PACK993021092.596302250

    根据上面的表格给出的测试数据,我们简单得出以下结论:

    • 针对测试表,Archive表占用空间约为之前的18.7%myisampack后空间占用约为之前的24.6%;二者相差不多,单纯从空间利用情况来看,我们似乎需要选择archive表;

    • 我们再看查询性能,与基准表进行对比。无论在总耗时还是系统负载方面,50并发下的pack表查询性能与基准表相当; 而archive表在单并发情况下耗时超过了5分钟 (实在等不了了,kill之)!

    那么,我们似乎可以得出结论,针对需要在线查询的表,ARCHIVE引擎基本上可以不考虑了。

    为什么这个测试过程中ARCHIVE引擎如此地慢呢?

    我们知道,mysql提供archive这种存储引擎是为了降低磁盘开销,但还有一个前提,那就是被归档的数据不需要或者很少被在线查询,偶尔的查询慢一些也是没关系的。鉴于上述原因,archive表是不允许建立自增列之外的索引的。

    有了这个共识,我们拿一条测试SQL来分析一下不用索引前后的查询性能差别为什么这么大。

    在我们的测试SQL中有这么一条:

    SELECT c1,c2,...,cn FROM  mysqlslap.rpt_topranks_v3WHERE ... AND partition_by1 = '50008090'ORDER BY added_quantity3 DESCLIMIT 500

    我们前边说过,测试的这个表在partition_by1这个字段上建立了索引,那么,我们初步判断在基准表和myisampack表上,这个查询应该用到了partition_by1的索引; EXPLAIN 一下:

    mysql> EXPLAIN    -> SELECT ... FROM  mysqlslap.rpt_topranks_v3    -> WHERE ... AND partition_by1 = '50008090'    -> ORDER BY added_quantity3 DESC    -> LIMIT 500\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        TABLE: rpt_topranks_v3         type: refpossible_keys: idx_toprank_pid,idx_toprank_chg          KEY: idx_toprank_pid      key_len: 99          ref: const         rows: 2477        Extra: USING WHERE; USING filesort1 row IN SET (0.00 sec)

    正如我们所料,这个查询用到了建立在partition_by1这个字段上的索引,匹配的目标行数为2477,然后还有一个在added_quantity3字段上的排序。由于added_quantity3没有索引,所以用到了filesort

    我们再看一下这条SQL在归档表上的 EXPLAIN 结果:

    mysql> EXPLAIN    -> SELECT ... FROM  mysqlslap.rpt_topranks_v3_<strong>archive</strong>    -> WHERE ... AND partition_by1 = '50008090'    -> ORDER BY added_quantity3 DESC    -> LIMIT 500\G*************************** 1. row ***************************           id: 1  select_type: SIMPLE        TABLE: rpt_topranks_v3_archive         type: ALLpossible_keys: NULL          KEY: NULL      key_len: NULL          ref: NULL         rows: 2424753        Extra: USING WHERE; USING filesort1 row IN SET (0.00 sec)

    EXPLAIN 说:“我没有索引可用,所以只能全表扫描2424753行记录,然后再来个filesort。”你要追求性能,那显然是委屈MySQL了。

    感谢各位的阅读!关于“mysql中如何进行数据压缩性能对比”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    mysql中如何进行数据压缩性能对比

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    mysql中如何进行数据压缩性能对比

    这篇文章给大家分享的是有关mysql中如何进行数据压缩性能对比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 测试环境1.1 软硬件一台 64位 2.6.18-92 内核Linux开发机,4G内存,4个280
    2023-06-25

    怎么在linux中对数据进行压缩

    这篇文章将为大家详细讲解有关怎么在linux中对数据进行压缩,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1,tar命令使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是
    2023-06-09

    如何在Teradata中进行数据分区和压缩以优化性能

    在Teradata中,数据分区和数据压缩是两种常见的优化性能技术。数据分区可以帮助提高查询性能,减少查询数据量,而数据压缩可以减少磁盘空间占用和提高查询性能。以下是在Teradata中进行数据分区和压缩的一般步骤:数据分区:数据分区可以根据
    如何在Teradata中进行数据分区和压缩以优化性能
    2024-04-09

    PHP Session 跨域与数据压缩传输的性能对比

    引言:在Web开发中,PHP Session 是一种常用的跨页面和跨请求的数据传输方式。然而,当我们面对大量数据传输或跨域问题时,我们需要考虑性能和效率的问题。本文将探讨PHP Session 跨域与数据压缩传输的性能对比,并给出具体的代码
    2023-10-21

    Android应用中如何对文件进行压缩与解压缩

    Android应用中如何对文件进行压缩与解压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。使用场景当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样
    2023-05-31

    如何在Android中对字符串进行压缩

    这期内容当中小编将会给大家带来有关如何在Android中对字符串进行压缩,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。使用到的类库GZIPOutputStream代码示例import java.io.By
    2023-05-30

    JMeter如何对MySQL数据库进行压力测试

    这篇文章将为大家详细讲解有关JMeter如何对MySQL数据库进行压力测试,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、安装并配置 JMeter下载官网下载,下载二进制的这个 zip配置环境变量然后解
    2023-06-28

    如何在Android应用中对图片进行压缩

    本篇文章给大家分享的是有关如何在Android应用中对图片进行压缩,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、质量压缩法设置bitmap options属性,降低图片的质
    2023-05-31

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

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

    如何进行GNU/kFreeBSD和GNU/Linux性能对比

    如何进行GNU/kFreeBSD和GNU/Linux性能对比,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Debian Squeeze将发布基于FreeBSD kernel
    2023-06-16

    Hive中如何执行数据压缩操作

    Hive中可以通过设置表的属性来执行数据压缩操作。以下是在Hive中执行数据压缩的一般步骤:创建表时指定数据压缩格式在创建表的时候,可以通过设置表的属性来指定数据的压缩格式。例如,可以使用STORED AS关键字和TBLPROPERTIE
    Hive中如何执行数据压缩操作
    2024-03-12

    Hive中如何实现对中间数据启用压缩

    这篇文章主要介绍了Hive中如何实现对中间数据启用压缩,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。对中间数据启用压缩复杂的Hive查询通常会转换为一系列多阶段的MapRed
    2023-06-02

    如何通过Graylog进行日志数据的压缩和存储

    在Graylog中,可以通过以下方式对日志数据进行压缩和存储:在Graylog中配置消息存储策略,可以选择使用Elasticsearch来存储数据。Elasticsearch提供了灵活的数据压缩和存储机制,可以根据需求对数据进行压缩和存储。
    如何通过Graylog进行日志数据的压缩和存储
    2024-04-25

    编程热搜

    目录