@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引擎相关推荐

  1. 最全MySQL基础篇

    文章目录 导入表的问题 第三章_最基本的SELECT语句 1. SQL语言的规则和规范 1) 基本规则 2) SQL大小写规范(建议遵守) 3) 注释 4) 命名规则 2. 基本的SELECT语句 1 ...

  2. MySQL——基础篇

    MySQL--基础篇 一.数据库的相关概念 数据库(database) 保存有组织的数据的容器(通常是一个文件或一组文件). 表(table) 某种特定类型数据的结构化清单. 模式(schema) 关 ...

  3. MySQL基础篇:子查询

    文章目录 概述 where型子查询 from型子查询 EXISTS型子查询 复制表子查询 概述 在某些情况下,当进行一个查询时,需要的条件或数据要用另一个select语句的结果,这个时候,就要用到** ...

  4. mysql 基础篇(二) 账号、权限管理

    mysql 基础篇(二) 账号.权限管理.备份与还原 建立账号密码: Grant all on test.* to "cj"@"localhost" ident ...

  5. mysql基础之存储引擎

    mysql基础之存储引擎 原文:mysql基础之存储引擎 数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎 常用的表的引擎 Myisam ,批量插入速度快, 不支持事务, ...

  6. Mysql基础篇(1)—— 基础概念、DML基本语法和表连接

    前言 Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧 数据库相关概念 DB: 数据库(Database) ​ 存储数据的仓库,本质是一个文件系统.它保存了一系列有组织的数据. DBMS:数据库 ...

  7. 【MySQL基础篇】数据导出导入权限与local_infile参数

    [MySQL基础篇]数据导出导入权限与local_infile参数 问题背景 数据导出测试 创建测试库(在主库进行) 测试数据导出(在从库进行) 测试数据导入(在主库进行) 问题背景 MySQL高可用 ...

  8. 深入浅出Mysql - 基础篇(列类型/运算符/函数)

    深入浅出Mysql - 基础篇(列类型/运算符/函数) 每一个常量.变量和参数都有数据类型,它用来指定一定的存储格式.约束和有效范围.MySQL提供了多种数据类型,主要包括数值型.字符串类型.日期和时 ...

  9. MySQL基础篇——第11章 DML(数据操作):增删改

    MySQL基础篇--第11章 DML(数据操作):增删改 1. 插入数据(增) INSERT INTO ... 使用 INSERT INTO 语句向表中插入数据(记录) 1.1 方式1:VALUES ...

最新文章

  1. 如何捕获window.print点击打印或取消_视频:手把手教您如何优化喷墨波形
  2. LeetCode 面试题57 - II(剑指offer) 和为s的连续正数序列
  3. 包含目录、库目录、附加包含目录、附加库目录、附加依赖项如何使用? 及静态库,动态库的创建与调用和vs里引用的使用
  4. deeplearning.ai——构建循环神经网络
  5. 181007扇贝有道每日一句
  6. 电子海图的航线多尺度生成方法
  7. 麻省理工学院公开课:计算机科学及编程导论 课堂笔记
  8. Virtual Table — RTTI — typeinfo dynamic_cast 模板编程 orocos OperationCaller 类的设计
  9. Zabbix通过SNMP协议监控H3C交换机
  10. 计算机word入门教学ppt,word2003入门教学课件
  11. 北邮计院数电第五章——VHDL语言
  12. Linux安装CentOS系统
  13. 如何下载滨海新区卫星地图高清版大图
  14. redis高并发下的处理考勤打卡数据
  15. 程序人生路(四)学会时间管理并做好读书学习,这样才能成为职场中常胜将军
  16. hexo添加disqus_使用Disqus将传统评论添加到Tumblr博客
  17. 小白月赛25 G解方程
  18. EasyExcel项目实例
  19. 室友打了俩把LOL,我知道了类是怎样加载的
  20. 转速反馈单闭环直流调速系统仿真

热门文章

  1. OpenCV学习笔记(5)_ ellipse绘制函数浅析
  2. 谷歌编程之夏 2021:IBus 自定义
  3. 环形穿梭车(RGV)高效搬运设计方法
  4. CSDN文章 无法通过百度搜索,怎么办?
  5. 关于raid5数据恢复
  6. 清空UIWebView历史网页
  7. 小猪博客(猪窝) -- 关注新鲜、有趣、不可思议的事物
  8. 用input标签 文件,多文件上传
  9. 清华大学计算机系毕业礼物,送给母校的毕业礼物
  10. 杰奇php手机登陆自动跳转,杰奇cms通过js代码,实现微信访问自动登录