广告
返回顶部
首页 > 资讯 > 数据库 >mysql的数据压缩性能比较
  • 925
分享到

mysql的数据压缩性能比较

2024-04-02 19:04:59 925人浏览 泡泡鱼
摘要

本篇内容主要讲解“Mysql的数据压缩性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql的数据压缩性能比较”吧! 1. 测试环境:软硬件

本篇内容主要讲解“Mysql的数据压缩性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习mysql的数据压缩性能比较”吧!


 
1. 测试环境:
软硬件
一台64位2.6.18-92 内核开发机,4G内存,4个2800Mhz Dual-Core AMD Opteron(tm) Processor 2220 CPU。
 
Mysql放在一块7200转SAT硬盘,未做raid;
 
MySQL未做任何优化,关闭了query cache,目的在于避免query cache对测试结果造成干扰。
 
表结构
2424753条记录,生产环境某一个分片的实际数据;
 
分别建立了(partition_by1,idx_rank) 和(partition_by1,chg_idx)的联合索引,其中partition_by1为32长度的varchar类型,用于检索;其余两个字段均为浮点数,多用于排序
 
autokid作为子增列,充当PRIMARY KEY,仅作为数据装载时原子性保证用,无实际意义。
 
2. 测试目的:
压缩空间对比
压缩率越大,占用的磁盘空间越小,直接降低数据的存储成本;
 
查询性能对比
压缩后查询性能不应该有显著降低。ArcHive是不支持索引的,因此性能降低是必然的,那么我们也应该心里有个谱,到底降低了多少,能不能接受。
 
3. 测试工具
slap
官方的工具当然是不二之选。关于mysqlslap的介绍请参考 官方文档。
 
测试query
截取生产环境访问topranks_v3表的实际SQL共9973条,从中抽取访问量较大的7条,并发50,重复执行10次。命令如下:
 
./mysqlslap --defaults-file=../etc/my.cnf -u**** -p**** -c50 -i10 -q ../t.sql --debug-info4.测试结论
 
比较项 磁盘空间 耗时(秒)CPU Idle LOAD 并发
基准表(MyISAM)403956004 2.308 30 15 50
ARCHIVE 75630745 >300 75 4 1
PACK 99302109 2.596 30 22 50
 
根据上面的表格给出的测试数据,我们简单得出以下结论:
 
针对测试表,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_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
    -&gt; SELECT ... FROM  mysqlslap.rpt_topranks_v3_<strong>archive</strong>
    -&gt; WHERE ... AND partition_by1 = '50008090'
    -&gt; ORDER BY added_quantity3 DESC
    -&gt; 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的数据压缩性能比较”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: mysql的数据压缩性能比较

本文链接: https://www.lsjlt.com/news/60530.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • mysql的数据压缩性能比较
    本篇内容主要讲解“mysql的数据压缩性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql的数据压缩性能比较”吧! 1. 测试环境:软硬件...
    99+
    2022-10-18
  • mysql的数据压缩性能对比详情
    目录1. 测试环境1.1 软硬件1.2 表结构2. 测试目的2.1 压缩空间对比2.2 查询性能对比3. 测试工具3.1 mysqlslap3.2 测试query4.测试结论数据魔方...
    99+
    2022-11-12
  • mysql中如何进行数据压缩性能对比
    这篇文章给大家分享的是有关mysql中如何进行数据压缩性能对比的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1. 测试环境1.1 软硬件一台 64位 2.6.18-92 内核Linux开发机,4G内存,4个280...
    99+
    2023-06-25
  • PHP Session 跨域与数据压缩传输的性能对比
    引言:在Web开发中,PHP Session 是一种常用的跨页面和跨请求的数据传输方式。然而,当我们面对大量数据传输或跨域问题时,我们需要考虑性能和效率的问题。本文将探讨PHP Session 跨域与数据压缩传输的性能对比,并给出具体的代码...
    99+
    2023-10-21
    数据压缩 PHP Session 跨域
  • 用PHP连mysql和oracle数据库性能比较
    本篇内容主要讲解“用PHP连mysql和oracle数据库性能比较”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“用PHP连mysql和oracle数据库性能比较...
    99+
    2022-10-18
  • Impala与MySQL:比较优化Impala数据库性能的方法
    作者:禅与计算机程序设计艺术 Impala 与 MySQL:比较优化 Impala 数据库性能的方法 引言 1. 背景介绍 随着大数据时代的到来,数据存储和处理能力成为企业构建高性能、高可用性的信息...
    99+
    2023-09-13
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
  • Percona Server与MySQL 5.5性能的比较
    本篇内容介绍了“Percona Server与MySQL 5.5性能的比较”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,...
    99+
    2022-10-18
  • 大数据量的情况下MySQL插入方法的性能比较
    这篇文章主要讲解了“大数据量的情况下MySQL插入方法的性能比较”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“大数据量的情况下MySQL插入方法的性能比较”...
    99+
    2022-10-18
  • 压缩MySQL数据文件的方法
    这篇文章主要介绍“压缩MySQL数据文件的方法”,在日常操作中,相信很多人在压缩MySQL数据文件的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”压缩MySQL数据文件的...
    99+
    2022-10-18
  • MySQL大量数据插入各种方法性能分析与比较
    不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入。插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方法的选择。 插入...
    99+
    2022-05-30
    InnoDB MyISAM MySQL 事务 性能 插入 索引
  • MYSQL 数据库时间字段 INT,TIMESTAMP,DATETIME 性能效率的比较介绍
    目录一、准备工作1.1 建表1.2 插入100万条测试数据二、MyISAM引擎2.1 MyISAM 引擎无索引下的 dint/dtimestamp/d_datetime2.1.1 int 类型是否调用 Unix_TIME...
    99+
    2022-09-16
  • MYSQL 数据库时间字段 INT,TIMESTAMP,DATETIME 性能效率的比较介绍
    目录一、准备工作1.1 建表1.2 插入100万条测试数据二、MyISAM引擎2.1 MyISAM 引擎无索引下的 dint/dtimestamp/d_datetime2.1.1 i...
    99+
    2022-11-13
  • 如何通过技术手段提升数据库性能:Oracle vs. MySQL比较
    如何通过技术手段提升数据库性能:Oracle vs. MySQL比较引言:数据库是现代应用程序的核心组成部分,负责存储和管理数据。当数据量增加或者并发用户增加时,数据库性能可能会变得缓慢。在这种情况下,提升数据库性能变得尤为重要。本文将比较...
    99+
    2023-10-22
    MySQL Oracle 数据库性能
  • HTTP 数组与 Bash 数组的性能比较如何?
    在计算机编程中,数组是一种常用的数据结构,它可以将多个元素组合在一起,以便于进行操作和处理。不同编程语言对数组的实现方式也不尽相同,本文将重点比较 HTTP 数组和 Bash 数组的性能。 HTTP 数组是一种通过 HTTP 请求获取数据...
    99+
    2023-09-23
    http 数组 bash
  • linux下实现web数据同步的四种方式(性能比较)
    实现web数据同步的四种方式 ======================================= 1、nfs实现web数据共享2、rsync +inotify实现web数...
    99+
    2022-11-15
    web数据同步
  • 我们如何比较两个 MySQL 表中的数据?
    有时我们需要找出两个表中不匹配的数据,尤其是在数据迁移的情况下。可以通过比较表格来完成。考虑下面的示例,其中我们有两个名为“students”和“student1”的表。mysql> Select * from studen...
    99+
    2023-10-22
  • 如何使用 MySQL STRCMP() 函数比较表的列数据值?
    如果我们想要比较两列的数据值,那么我们需要提供列的名称作为 MySQL STRCMP() 函数的参数。假设我们有一个名为“Marks”的表,其中包含学生的姓名及其在不同科目中的安全分数。现在,如果我们想知道某个学生在两门科目中获得更多、更少...
    99+
    2023-10-22
  • 详解NumPy中的线性关系与数据修剪压缩
    目录摘要一、用线性模型预测价格二、趋势线 三、数组的修剪和压缩四、阶乘摘要 总结股票均线计算原理--线性关系,也是以后大数据处理的基础之一,NumPy的 linalg 包是...
    99+
    2022-11-11
  • MySQL数据库中varchar类型的数字比较大小的方法
    创建测试表 -- ---------------------------- -- Table structure for check_test -- --------------...
    99+
    2022-11-12
  • 阿里云数据库比Mysql性能更强的云数据库服务
    随着互联网的快速发展,数据量的爆炸性增长使得数据库的性能和效率成为了关键因素。阿里云数据库作为一款云数据库服务,拥有强大的数据处理能力和稳定性,与传统MySQL数据库相比,其性能更为优越。本文将详细介绍阿里云数据库的特性、优势以及使用场景,...
    99+
    2023-11-07
    数据库 阿里 更强
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作