Archive引擎初探

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介:
今天研究了一下Archive引擎,发现其唯一的优点:在于节省磁盘空间,与Myisam引擎相比,节省近13倍多的磁盘空间,占用的磁盘空间少了,I/O占用也随之变小,不过,个人认为,在磁盘这么廉价的今天,Archive引擎也没有什么优势。
 
查看表的当前引擎为Myisam:
mysql> show table status like 'Sword_log'\G;
*************************** 1. row ***************************
           Name: Sword_log
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 7215544
 Avg_row_length: 166
    Data_length: 1203502908
Max_data_length: 281474976710655
   Index_length: 73538560
      Data_free: 0
 Auto_increment: 188213135
    Create_time: 2010-08-05 00:43:19
    Update_time: 2010-08-05 00:48:35
     Check_time: 2010-08-05 00:48:37
      Collation: utf8_general_ci
       Checksum: NULL
 Create_options: 
        Comment: 
1 row in set (0.00 sec)
ERROR: 
No query specified
 
 

mysql> desc Sword_log;
+------------+---------------+------+-----+-------------------+-----------------------------+
| Field      | Type          | Null | Key | Default           | Extra                       |
+------------+---------------+------+-----+-------------------+-----------------------------+
| id         | int(16)       | NO   | PRI | NULL              | auto_increment              |
| operate    | varchar(40)   | NO   |     | NULL              |                             |
| param      | varchar(2048) | NO   |     | NULL              |                             |
| createDttm | timestamp     | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| userId     | int(16)       | NO   |     | NULL              |                             |
| accId      | int(16)       | NO   |     | NULL              |                             |
| accName    | varchar(40)   | NO   |     | NULL              |                             |
| userName   | varchar(40)   | NO   |     | NULL              |                             |
+------------+---------------+------+-----+-------------------+-----------------------------+
8 rows in set (0.00 sec)
 
 
测试查询时间,Myisam引擎耗时2.31秒:
mysql> select count(*),id from Sword_log group by id having count(*)>1;
Empty set (2.31 sec)
 
 
把引擎改为Innodb格式,并再次查询,耗时2.62秒:
mysql> alter table Sword_log engine=innodb;
Query OK, 7215544 rows affected (1 min 56.15 sec)
Records: 7215544  Duplicates: 0  Warnings: 0
mysql> select count(*),id from Sword_log group by id having count(*)>1;
Empty set (2.62 sec)
 
 
 
把引擎改为Archive格式的的时候报错,个人感觉可能是mysql bug,删除自增及主键后可以改,不过这样应该没有什么实际意义了,靠应用来维护基本上是不可能的事情,更改为Archive之后,查询时间为1分38秒:

mysql> alter table Sword_log engine=archive;
ERROR 1022 (23000): Can't write; duplicate key in table '#sql-6d20_55'

mysql> alter table Sword_log change id id int(16);
Query OK, 7215544 rows affected (1 min 35.59 sec)
Records: 7215544  Duplicates: 0  Warnings: 0
mysql> alter table Sword_log drop primary key;
Query OK, 7215544 rows affected (2 min 25.19 sec)
Records: 7215544  Duplicates: 0  Warnings: 0
mysql> alter table Sword_log engine=archive;
Query OK, 7215544 rows affected (1 min 5.83 sec)
Records: 7215544  Duplicates: 0  Warnings: 0
mysql> select count(*) from Sword_log;
+----------+
| count(*) |
+----------+
|  7215544 |
+----------+
1 row in set (0.00 sec)
mysql> select count(*),id from Sword_log group by id having count(*)>1;
Empty set (1 min 37.86 sec)
 
 
 
采用Myisam引擎Sword_log表所占用的磁盘空间:
[root@youyou yy]# du -sh Sword_log*
20K     Sword_log.frm
1.2G    Sword_log.MYD
94M     Sword_log.MYI
 
 
 
采用Archive引擎Sword_lg表所占用的磁盘空间:
[root@youyou xx]# du -sh Sword_log*
97M     Sword_log.ARZ
20K     Sword_log.frm
 









本文转自 trt2008 51CTO博客,原文链接:http://blog.51cto.com/chlotte/362209,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
8月前
ApacheHudi Archive(归档)实现分析
ApacheHudi Archive(归档)实现分析
92 0
|
5月前
|
存储 NoSQL 关系型数据库
编译GreatSQL with RocksDB引擎
这是一个大致的过程,根据您的系统环境,GreatSQL的版本和RocksDB的集成方式,这些步骤可能会有所差异。因此,通常建议您仔细阅读官方文档来获得针对您所处环境的详尽指南。
45 0
|
6月前
|
Oracle 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在online模式下增量抓取Oracle数据时,在archive_log切换时,出现数据丢失的情况,是什么原因
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
关系型数据库 数据库 PostgreSQL
PostgreSQL 11 新特性解读 : Initdb/Pg_resetwal支持修改WAL文件大小
PostgreSQL 11 版本的一个重要调整是支持 initdb 和 pg_resetwal 修改 WAL 文件大小,而 11 版本之前只能在编译安装 PostgreSQL 时设置 WAL 文件大小。
8971 0
|
关系型数据库 PostgreSQL
PostgreSQL如何删除不使用的xlog文件
PostgreSQL如何删除不使用的xlog文件
172 0
|
Oracle 安全 关系型数据库
如何在openGauss/PostgreSQL手动清理XLOG/WAL 文件?
openGauss/PostgreSQL中的预写式日志WAL(Write Ahead Log),又名Xlog或redo log,相当于oracle的online redo log, 不同的是oracle online redo log是提前创建几组滚动使用,但在opengauss中只需要本配置参数控制WAL日志的周期,数据库会一直的创建并自动清理,但存在一些情况WAL日志未清理导致目录空间耗尽,或目录空间紧张时手动删除wal日志时,比如如何确认在非归档模式下哪些WAL日志文件可以安全删除?
1054 0
|
8月前
|
关系型数据库 数据库 流计算
Flink CDC在处理Incremental Snapshot PG数据库时
Flink CDC在处理Incremental Snapshot PG数据库时
326 1
|
存储 SQL 关系型数据库
postgresql snapshot 快照源码解读
本文主要介绍数据库事务快照,分别从源码实现角度和从SQL使用角度来剖析,快照的原理,作用,用途,以及在实现过程中存在的一些差异。
754 3
|
监控 关系型数据库 Shell
[翻译]PG15新特性-加速WAL日志归档
[翻译]PG15新特性-加速WAL日志归档
174 0

热门文章

最新文章