mysql基础篇-archive引擎
@TOP
1.archive 引擎特点
Archive引擎作用:为大量很少引用的历史、归档、或安全审计信息的存储和检索提供了完美的解决方案。
优点:
1.可以压缩:以zlib对表数据进行压缩,磁盘I/O更少,数据存储在ARZ为后缀的文件中。
2.存储空间小:Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。
3.插入数据性能好:当表内的数据达到1.5GB这个量级,CPU又比较快的时候,Archive表的执行性能就会超越MyISAM表。因为这个时候,CPU会取代I/O子系统成为性能瓶颈。别忘了Archive表比其他任何类型的表执行的物理I/O操作都要少。
4.数据迁移简单:Archive表可以方便地移植到新的MySQL环境,你只需将保存Archive表的底层文件复制过去就可以了。
5.支持行锁:Archivec存储引擎使用行锁来实现高并发插入操作
6.支持分区:Archive存储引擎支持分区
缺点
1.不支持索引:archive引擎不支持索引。
2.不支持更新:archive引擎不支持更新,删除。
3.不支持事务:archive引擎不支持事务。
2. 存储
每个archive表在磁盘上存在两个文件:.frm(存储表定义).arz(存储数据)
往archive表插入的数据会经过压缩,archive使用zlib进行数据压缩,archive支持optimize table、 check table操作。
一个insert语句仅仅往压缩缓存中插入数据,插入的数据在压缩缓存中被锁定,当select操作时会触发压缩缓存中的数据进行刷新。insert delay除外。
对于一个bulk insert操作只有当它完全执行完才能看到记录,除非在同一时刻还有其它的inserts操作,在这种情况下可以看到部分记录,select从不刷新bulk insert除非在它加载时存在一般的Insert操作。
3.索引
1.archive存储引擎支持insert、replace和select操作,但是不支持update和delete。
2.archive存储引擎支持blob、text等大字段类型。支持auto_increment自增列同时自增列可以不是唯一索引。
3.archive支持auto_increment列,但是不支持往auto_increment列插入一个小于当前最大的值的值。
4.archive不支持索引所以无法在archive表上创建主键、唯一索引、和一般的索引。
4.innodb , myisam 和 archive 的测试
测试机器配置为:6核 cpu ,8G 内存 ,Ubuntu 64位系统
数据库结构如下
CREATE TABLE `logs_archive` (`name` varchar(255) DEFAULT NULL,`time` bigint(20) DEFAULT NULL,`creat_time` bigint(20) DEFAULT NULL
) ENGINE=ARCHIVE DEFAULT CHARSET=utf8;CREATE TABLE `logs_innodb` (`name` varchar(255) DEFAULT NULL,`time` bigint(20) DEFAULT NULL,`creat_time` bigint(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `logs_myisam` (`name` varchar(255) DEFAULT NULL,`time` bigint(20) DEFAULT NULL,`creat_time` bigint(20) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
批量添加测试
以一千万条数据为例,golang语言环境运行,使用orm方式,开启100个协程插入:
InnoDB
使用时间为:1116.403146241秒
存储数据长度:960.00 MB
MyISAM
使用时间为: 888.011918396秒
存储数据长度:572.20 MB
ARCHIVE
使用时间为: 785.65768241秒
存储数据长度:207.87 MB
总结:
InnoDB,MyISAM,ARCHIVE三个存储引擎,批量插入速度,ARCHIVE最快,MyISAM次之,InnoDB最慢;
存储数据长度ARCHIVE最小,MyISAM次之,InnoDB最大;
删除测试
DELETE FROM logs_innodb WHERE name
=‘new_test’
Affected rows: 1
时间: 4.128s
DELETE FROM logs_myisam WHERE name
=‘new_test’
Affected rows: 1
时间: 1.1s
DELETE FROM logs_archive WHERE name
=‘new_test’
1031 - Table storage engine for ‘logs_archive’ doesn’t have this option
时间: 5.232s
总结:
InnoDB,MyISAM,ARCHIVE三个存储引擎,删除性能,MyISAM最快,InnoDB次之,ARCHIVE最慢且报错;
更改测试
UPDATE logs_innodb SET name
=‘new_test2’ WHERE name
= ‘new_test’
Affected rows: 1
时间: 4.096s
UPDATE logs_myisam SET name
=‘new_test2’ WHERE name
= ‘new_test’
Affected rows: 1
时间: 19.741s
UPDATE logs_archive SET name
=‘new_test2’ WHERE name
= ‘new_test’
1031 - Table storage engine for ‘logs_archive’ doesn’t have this option
时间: 5.243s
总结:
InnoDB,MyISAM,ARCHIVE三个存储引擎,更改操作性能,InnoDB 最快,MyISAM 最慢,ARCHIVE报错;
查询测试
条件查询
SELECT * FROM logs_innodb WHERE creat_time = ‘1579414712’ LIMIT 1
时间: 0.003s
SELECT * FROM logs_myisam WHERE creat_time = ‘1579416525’ LIMIT 1
时间: 0.001s
SELECT * FROM logs_archive WHERE creat_time = ‘1579418376’ LIMIT 1
时间: 0.01s
SELECT * FROM logs_innodb WHERE creat_time = ‘1579414712’ LIMIT 100000
时间: 3.019s
SELECT * FROM logs_myisam WHERE creat_time = ‘1579416525’ LIMIT 100000
时间: 0.79s
SELECT * FROM logs_archive WHERE creat_time = ‘1579418376’ LIMIT 100000
时间: 4.911s
使用count查询条数
SELECT COUNT(*) FROM logs_innodb;
时间: 2.663s
SELECT COUNT(*) FROM logs_myisam;
时间: 0s
SELECT COUNT(*) FROM logs_archive;
时间: 0s
SELECT COUNT(*) FROM logs_innodb WHERE creat_time
= ‘1579414712’
时间: 2.758s
SELECT COUNT(*) FROM logs_myisam WHERE creat_time
= ‘1579416525’
时间: 0.774s
SELECT COUNT(*) FROM logs_archive WHERE creat_time
= ‘1579418376’
时间: 4.927s
总结:
InnoDB,MyISAM,ARCHIVE三个存储引擎,单行数据查询操作性能, MyISAM 最快,InnoDB 次之,ARCHIVE最慢;
文章参考网上资料,如有侵权请联系删除
mysql基础篇-archive引擎相关推荐
- 最全MySQL基础篇
文章目录 导入表的问题 第三章_最基本的SELECT语句 1. SQL语言的规则和规范 1) 基本规则 2) SQL大小写规范(建议遵守) 3) 注释 4) 命名规则 2. 基本的SELECT语句 1 ...
- MySQL——基础篇
MySQL--基础篇 一.数据库的相关概念 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件). 表(table) 某种特定类型数据的结构化清单. 模式(schema) 关 ...
- MySQL基础篇:子查询
文章目录 概述 where型子查询 from型子查询 EXISTS型子查询 复制表子查询 概述 在某些情况下,当进行一个查询时,需要的条件或数据要用另一个select语句的结果,这个时候,就要用到** ...
- mysql 基础篇(二) 账号、权限管理
mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...
- mysql基础之存储引擎
mysql基础之存储引擎 原文:mysql基础之存储引擎 数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎 常用的表的引擎 Myisam ,批量插入速度快, 不支持事务, ...
- Mysql基础篇(1)—— 基础概念、DML基本语法和表连接
前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...
- 【MySQL基础篇】数据导出导入权限与local_infile参数
[MySQL基础篇]数据导出导入权限与local_infile参数 问题背景 数据导出测试 创建测试库(在主库进行) 测试数据导出(在从库进行) 测试数据导入(在主库进行) 问题背景 MySQL高可用 ...
- 深入浅出Mysql - 基础篇(列类型/运算符/函数)
深入浅出Mysql - 基础篇(列类型/运算符/函数) 每一个常量.变量和参数都有数据类型,它用来指定一定的存储格式.约束和有效范围.MySQL提供了多种数据类型,主要包括数值型.字符串类型.日期和时 ...
- MySQL基础篇——第11章 DML(数据操作):增删改
MySQL基础篇--第11章 DML(数据操作):增删改 1. 插入数据(增) INSERT INTO ... 使用 INSERT INTO 语句向表中插入数据(记录) 1.1 方式1:VALUES ...
最新文章
- 如何捕获window.print点击打印或取消_视频:手把手教您如何优化喷墨波形
- LeetCode 面试题57 - II(剑指offer) 和为s的连续正数序列
- 包含目录、库目录、附加包含目录、附加库目录、附加依赖项如何使用? 及静态库,动态库的创建与调用和vs里引用的使用
- deeplearning.ai——构建循环神经网络
- 181007扇贝有道每日一句
- 电子海图的航线多尺度生成方法
- 麻省理工学院公开课:计算机科学及编程导论 课堂笔记
- Virtual Table — RTTI — typeinfo dynamic_cast 模板编程 orocos OperationCaller 类的设计
- Zabbix通过SNMP协议监控H3C交换机
- 计算机word入门教学ppt,word2003入门教学课件
- 北邮计院数电第五章——VHDL语言
- Linux安装CentOS系统
- 如何下载滨海新区卫星地图高清版大图
- redis高并发下的处理考勤打卡数据
- 程序人生路(四)学会时间管理并做好读书学习,这样才能成为职场中常胜将军
- hexo添加disqus_使用Disqus将传统评论添加到Tumblr博客
- 小白月赛25 G解方程
- EasyExcel项目实例
- 室友打了俩把LOL,我知道了类是怎样加载的
- 转速反馈单闭环直流调速系统仿真