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

技术mysql中如何进行数据压缩性能对比这篇文章给大家分享的是有关mysql中如何进行数据压缩性能对比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 测试环境1.1 软硬件一台 64位 2

本文是关于如何比较mysql中的数据压缩性能。我觉得边肖很实用,就和大家分享一下作为参考。让我们跟着边肖看一看。

00-1010

1. 测试环境

搭载2.6.18-92内核、4G内存和四颗2800 MHz双核AMD皓龙(TM)处理器2220 CPUs的64位Linux开发机。

MySQL放在一个7200 rpm的SAT硬盘上,没有raid;

MySQL关闭查询缓存没有进行任何优化,以避免查询缓存对测试结果的干扰。

00-10102424753记录,生产环境某一段的实际数据;

分别建立了(partition_by1,idx_rank)和(partition_by1,chg_idx)的联合索引,其中partition_by1为32长度的varchar类型,用于检索。另外两个字段是浮点数,主要用于排序。

Autokid作为子列,充当PRIMARY KEY,只用于保证数据加载的原子性,没有实际意义。

1.1 软硬件

10-1010,压缩比越高,占用的磁盘空间越小,直接降低了数据的存储成本;

00-1010压缩后的查询性能不应大幅降低。归档不支持索引,所以性能降级是不可避免的,所以我们也要心中有谱,降级多少,是否可以接受。

1.2 表结构

2. 测试目的

官方工具当然是最好的选择。mysqlslap的介绍请参考官方文件。

00-1010,从访问topranks_v3表的生产环境中一共截取了9973条实际的SQL片段,提取了7条访问量较大的片段,并行执行50次,重复执行10次。顺序如下:/mysqlslap -默认值-文件=./etc/my . CNF-u * * * *-p * * * *-c50-i10-q./t.sql -调试-信息

00-1010比较项目磁盘空间时间(秒)CPU IdleLOAD并发基准表(myisam)308301550 archive 4009.00000000005

对于测试表,Archive表占用的空间约为前一张的18.7%,myisampack后占用的空间约为前一张的24.6%。他们很相似。从空间利用的角度来看,似乎需要选择归档表。

让我们看看查询性能,并将其与基准表进行比较。无论总时间消耗还是系统负载,50并发下pack表的查询性能与基准表相当。单并发的情况下存档表需要5分钟以上(等不及了,杀了它)!

然后,我们似乎可以得出结论,ARCHIVE引擎基本上可以忽略需要在线查询的表。

为什么ARCHIVE引擎在这个测试中如此缓慢?

众所周知,mysql提供了归档存储。

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

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

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

SELECT c1,c2,...,cn FROM  mysqlslap.rpt_topranks_v3
WHERE ... AND partition_by1 = '50008090'
ORDER BY added_quantity3 DESC
LIMIT 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: ref
possible_keys: idx_toprank_pid,idx_toprank_chg
          KEY: idx_toprank_pid
      key_len: 99
          ref: const
         rows: 2477
        Extra: USING WHERE; USING filesort
1 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: ALL
possible_keys: NULL
          KEY: NULL
      key_len: NULL
          ref: NULL
         rows: 2424753
        Extra: USING WHERE; USING filesort
1 row IN SET (0.00 sec)

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

感谢各位的阅读!关于“mysql中如何进行数据压缩性能对比”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/73738.html

(0)

相关推荐

  • 怎么做一个Excel动态图表

    技术怎么做一个Excel动态图表本篇文章给大家分享的是有关怎么做一个Excel动态图表,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 本文说明下图是一个比较

    攻略 2021年10月21日
  • HyperLedger Fabric 2.0-release如何测试网络部署

    技术HyperLedger Fabric 2.0-release如何测试网络部署这篇文章主要介绍HyperLedger Fabric 2.0-release如何测试网络部署,文中介绍的非常详细,具有一定的参考价值,感兴趣

    攻略 2021年12月11日
  • Sharding ,分片模式)

    技术Sharding ,分片模式) Sharding (分片模式)Sharding (分片模式)
    副本集可以解决主节点发生故障导致数据丢失或不可用的问题,但遇到需要存储海量数据的情况时,副本集机制就束手

    礼包 2021年11月23日
  • 如何理解springboot pojo对象日期属性的问题

    技术如何理解springboot pojo对象日期属性的问题这篇文章主要讲解了“如何理解springboot pojo对象日期属性的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来

    攻略 2021年10月25日
  • 如何查询mysql的引擎

    技术如何查询mysql的引擎这篇文章主要讲解了“如何查询mysql的引擎”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何查询mysql的引擎”吧!

    攻略 2021年12月9日
  • Hibernate日志类别有哪些

    技术Hibernate日志类别有哪些本篇内容主要讲解“Hibernate日志类别有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate日志类别有哪些”吧!在H

    攻略 2021年12月4日