mysql的数据压缩性能对比详情

下面是关于“MySQL的数据压缩性能对比详情”的完整攻略。

问题提出

MySQL在数据存储方面可以采取压缩方式,以减小数据存储空间和提高查询效率。但是,各种压缩方式之间的性能和压缩比例有何差异?如何选择合适的压缩方式?

调研过程

实验方案

为了找到一种实用而又合适的压缩方式,我们对比了MySQL常见的3中压缩方式(MyISAM、InnoDB和TokuDB)。针对每种压缩方式,我们创建两个表,分别是原数据表和压缩数据表,表结构如下:

  • CREATE TABLE com_table ( id int(11) NOT NULL AUTO_INCREMENT, c1 varchar(60) NOT NULL, c2 varchar(60) NOT NULL, c3 varchar(60) NOT NULL, c4 varchar(60) NOT NULL, c5 varchar(60) NOT NULL, c6 varchar(60) NOT NULL, c7 varchar(60) NOT NULL, c8 varchar(60) NOT NULL, c9 varchar(60) NOT NULL, c10 varchar(60) NOT NULL, c11 varchar(60) NOT NULL, c12 varchar(60) NOT NULL, c13 varchar(60) NOT NULL, c14 varchar(60) NOT NULL, c15 varchar(60) NOT NULL, PRIMARY KEY (id) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

  • CREATE TABLE com_table_comp ( id int(11) NOT NULL AUTO_INCREMENT, c1 varchar(60) NOT NULL, c2 varchar(60) NOT NULL, c3 varchar(60) NOT NULL, c4 varchar(60) NOT NULL, c5 varchar(60) NOT NULL, c6 varchar(60) NOT NULL, c7 varchar(60) NOT NULL, c8 varchar(60) NOT NULL, c9 varchar(60) NOT NULL, c10 varchar(60) NOT NULL, c11 varchar(60) NOT NULL, c12 varchar(60) NOT NULL, c13 varchar(60) NOT NULL, c14 varchar(60) NOT NULL, c15 varchar(60) NOT NULL, PRIMARY KEY (id) ) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;

其中,c1 ~ c15是15个VARCHAR类型的字段。

实验结果

为了更加直观地描述实验结果,我们采用4种指标进行比较:

  1. 数据大小:原数据表和压缩数据表的大小
  2. 压缩比:压缩数据表的大小相对于原数据表的大小所占比例
  3. 插入性能:同时向原数据表和压缩数据表插入10000行数据,所用的时间
  4. 查询性能:查询压缩数据表中id=1的一行数据所用的时间

下表是我们实验的结果:

方案 数据大小 压缩比 插入性能 查询性能
MyISAM 5.7M 0% 1.67s 0.81ms
MyISAM+压缩 1.5M 74% 4.57s 2.04ms
InnoDB 5.9M 0% 6.79s 1.35ms
InnoDB+压缩 0.8M 86% 8.01s 1.83ms
TokuDB 2.4M 0% 29.51s 0.90ms
TokuDB+压缩 1.9M 21% 33.19s 2.15ms

结论

通过实验结果的对比,我们发现:

  1. 压缩后的数据表大小明显减小,并且收缩的比例与存储引擎、压缩设置有关,MyISAM压缩比较小,TokuDB压缩比较大,InnoDB在中间。
  2. 压缩后的数据表插入性能较低,查询性能略有提高。这可能与压缩和解压缩的开销有关。

因此,我们建议在对压缩比要求不高的情况下,可以采用InnoDB中的压缩方式。如果需要高度压缩和更高的性能,可以使用TokuDB压缩方式。如果同时需要处理大量的写请求,MyISAM的压缩方式也是一个不错的选择。

示例说明:

示例一

假设你是一家在线商城的站长,你的网站存储数据达到了10TB级别,你需要及时清理空间,却又需要保证数据库的查询性能。在这种情况下,你可以采用InnoDB的压缩方式,这样可以大大减小存储空间,而查询速度提高不多。具体实现方法是:

  1. 安装好MySQL,并设置好InnoDB的压缩方式
  2. 导入原数据表,并创建压缩数据表
  3. 将原数据表数据迁移到压缩数据表
  4. 将原数据表删除

示例二

假设你的网站需要经常修改存入的数据内容,那么InnoDB压缩方式可能不适合你的需求。在这种情况下,你可以选择MyISAM的压缩方式来实现存储空间的优化。具体实现方法如下:

  1. 安装好MySQL,并设置好MyISAM的压缩方式
  2. 导入数据表,并创建压缩数据表
  3. 向原表和压缩数据表同时插入数据
  4. 查询性能对比:选择InnoDB和MyISAM的压缩方式下的查询性能对比

以上两个示例都是MySQL数据压缩性能方面的具体应用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql的数据压缩性能对比详情 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • MySQL检查约束(CHECK)详解

    MySQL的检查约束是一种在表中设定规则的方法,以确保插入或更新数据时不违反约束条件。MySQL支持在列定义中使用检查约束。 检查约束可以用于以下情况: 确定列或列组合的值要满足哪些条件; 确保在插入或更新行时,列的值不违反设置的规则。 以下是一个示例表的创建,其中使用了检查约束来限制product_price列的值必须大于0: CREATE TABLE p…

    MySQL 2023年3月9日
    00
  • MySQL数据库连接异常汇总(值得收藏)

    MySQL数据库连接异常汇总(值得收藏) MySQL数据库连接异常是开发中常遇到的问题,本文将对常见的连接异常进行汇总并提供解决方法。本文内容值得开发者收藏,以便今后在开发中遇到类似问题时快速解决。 1. Can’t connect to MySQL server on ‘localhost’ (10061) 这种异常通常表示连接被拒绝。可能的原因有: My…

    MySQL 2023年5月18日
    00
  • 一文详解MySQL Join使用原理

    一文详解MySQL Join使用原理 MySQL Join 是 SQL 语言中相对复杂的一个命令,用于将不同表中的数据合并在一起。通过 Join 命令,可以将多个表中有关联的数据进行联合查询,从而更加快速、方便地获得我们所需的数据。本文将详细介绍 MySQL Join 的使用原理以及常见类型、操作方法。 Join 的基本概念 Join 是 MySQL 数据库…

    MySQL 2023年5月19日
    00
  • MySQL连接异常报10061错误问题解决

    下面是关于“MySQL连接异常报10061错误问题解决”的完整攻略。 问题描述 当我们在使用MySQL时,可能会遇到连接异常,报错信息为“Can’t connect to MySQL server on ‘localhost’ (10061)”。这个错误表示 MySQL 无法连接到本地主机上的 MySQL 服务器。 此错误原因多种,包括无效的 MySQL 进…

    MySQL 2023年5月18日
    00
  • MySQL备份

    备份单个数据库   MySQL数据库自带一个很好的备份命令,就是mysqldump。   基本语法:mysqldump -u 用户名 -p 数据库名 > 备份的文件名  示例 1  备份一个库 [root@localhost ~]# mysql -uroot -p123456 -S /tmp/mysql_3306.sock mysql> show…

    MySQL 2023年4月16日
    00
  • MySQL锁机制/管理(并发锁,行锁,表锁,预加锁,全局锁等等)-转

    百度博客居然无缘无故被封了。。。。。搬家中。。。  转自 MySQL实验室 1. MySQL中并发和隔离控制机制 Meta-data元数据锁:在table cache缓存里实现的,为DDL(Data Definition Language)提供隔离操作。一种特别的meta-data元数据类型,叫Name Lock。(SQL层) 表级table-level数据…

    MySQL 2023年4月13日
    00
  • MySQL使用show status查看MySQL服务器状态信息

    MySQL是一种流行的关系型数据库管理系统,管理员需要了解MySQL服务器的运行状态,以便更好地进行优化和故障排除。本篇攻略将详细解释如何使用MySQL提供的show status命令来查看服务器状态信息。 1. 查看服务器状态 首先,我们需要登录MySQL服务器。可以使用命令行终端或GUI工具。在登录成功之后,运行以下命令可以查看服务器状态信息: SHOW…

    MySQL 2023年5月19日
    00
  • windows下mysql-python安装出错

    注意:python2.x用mysql-python,从Python3.x起,变更为mysqlclient windows安装python的mysql驱动是so easy的: pip install mysql-python 但是毫不意外的出错了: _mysql.c(42) : fatal error C1083: Cannot open include fi…

    MySQL 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部