mysql存储引擎介绍:

  1. 插拔式的插件方式
  2. 存储引擎是指定在表上的,即一个库中的每一个表都可以指定专用的存储引擎
  3. 不管采用什么样的存储引擎,都会在数据区产生对应的一个frm文件(表结构定义描述文件)

我们都知道mysql有很多引擎比如:CSV存储引擎,Archive引擎,Memory存储引擎,MyISAM存储引擎,InnoDB存储引擎等很多引擎。今天我们主要看一下上面几个引擎。

CSV存储引擎

数据存以CSV文件

特点:
  • 不能定义索引,列定义必须为NOT NULL,不能设置自增列
  • CSV数据的存储用‘,’隔开,可以直接编辑CSV文件进行数据的编排(编排后要生效使用flush table **命令)

通过上面的特点可以看出: CSV存储引擎不适合大表或则数据在线处理,而且安全性低。 CSV存储引擎的应用场景为数据的快速导入导出,表格直接转换为CSV等场景。

Archive引擎

压缩协议进行数据的存储,数据存储为ARZ文件格式

特点:
  • 只支持insert和select两种操作
  • 只允许自增ID列建立索引
  • 行级锁
  • 不支持事务
  • 数据占用磁盘少

适用场景:日志系统,大量的设备数据采集

Memory引擎

数据都是存在内存中,IO效率比其他引擎高,但是服务重启后数据会丢失,数据表默认只有16M

特点
  • 支持hash,B TREE索引,默认为hash索引
  • 字段长度是固定长度char(32)
  • 不支持大数据存储类型字段如blog,text等
  • 表级锁

应用场景:

  • 等值查找数据。
  • 查询结果在内存中计算的大多数采用这种存储引擎作为临时表存储需要计算的数据。

####Myisam Mysql5.5版本之前的默认存储引擎

特点
  • select count(*) from aaa;无需进行数据扫描
  • 数据和索引分开存储
  • 表级锁
  • 不支持事务

Innodb

Mysql5.5版本之后的默认存储引擎

特点
  • 支持事务
  • 行级锁定(更新时一般是锁定当前行):通过索引实现,全表扫描仍然会是锁定整个表,注意间隙锁的影响.
  • 读写阻塞与事务隔离级别相关.
  • 具有非常高效的缓存特性,能缓存索引,也能缓存数据.
  • 聚集索引方式进行数据存储
  • 所有Secondary Index 都会保存主键信息.
  • 和MyISAM相比,InnoDB对于硬件资源要求比较高.

应用场景:

  • 需要支持事务的业务
  • 行级锁定对于高并发有很好的适应能力,但是需要保证查询是通过索引完成.
  • 数据读写及更新都比较频繁的场景.
  • 数据一致性要求很高的业务
  • 硬件设备内存较大,可以很好利用InnoDB较好的缓存能力来提高内存利用率,尽可能减少磁盘IO的开销.

下面来看看上面几种引擎的对比

Feature Myisam Memory Innodb Archive
B+ Tree yes yes yes no
clustered indexes no no yes no
compressed data yes(note2) no yes yes
data caches no no yes no
foreign key support no no yes no
geospatial data type support yes no yes yes
geospatial indexing support yes no yes(note 6) no
hash indexes no yes no(note 7) no
index caches yes yes yes no
locking granularity tabl table row row
MVCC no no yes no
REPLICATION SUPPORT(NOTE 1) yes limit(note8) yes yes
STORAGE LIMITS 256TB RAM 64TB None
Transactions no no yes no

最新文章

  1. 【转】VC中的字符串处理
  2. 利用mtd工具实现嵌入式设备在线升级
  3. 【转】为drupal初学者准备的12个精品课程
  4. 【风马一族_xml】xml的两种解析思想
  5. C++函数转换成C#函数
  6. POJ 3422 Kaka's Matrix Travels(最小费用最大流)
  7. jQuery EasyUI combobox多选和赋值
  8. Review1-11
  9. 一个demo
  10. MySQL之事务的四大特性
  11. 三、spring cloud 服务提供与调用
  12. 在Hadoop2.2基础上安装Spark(伪分布式)
  13. Binary Search(Java)(非递归)
  14. 16.kubernetes的RBAC
  15. jmeter将上一个接口返回值作为下一个接口的请求参数
  16. 了解Linux操作系统发展阶段
  17. Deepin 15.4 挂载分区
  18. wget命令的使用
  19. WMS和WMTS的区别
  20. Java——线程定时器

热门文章

  1. ubuntu 如何添加alias
  2. Educational Codeforces Round 57
  3. learn about sqlserver partitition and partition table --- add or remove table partitions addition more
  4. 使用IDEA详解Spring中依赖注入的类型(上)
  5. 源码详解系列(八) ------ 全面讲解HikariCP的使用和源码
  6. 如何在kalilinux上安装docker
  7. k8s系列---资源指标API及自定义指标API
  8. iptables服务器主机防火墙
  9. window下建立vue.js项目
  10. 3,HDFS原理