一、InnoDB存储引擎

在MySQL 5.5及以后的版本中,InnoDB是MySQL的默认引擎,这些年来,InnoDB一直在持续改进,处理能力不断提高,其优秀的性能和可维护性使它成为生产中普遍推荐使用的引擎。它的优点有:

1、灾难恢复性好。

2、支持全部4种级别的事务。默认的事务隔离级别是可重复读(Repeatable Read),它的事务支持是通过多版本并发控制(MVCC)来提供的。

3、使用行级锁。

4、对于InnoDB引擎中的表,其数据的物理组织形式是簇表(Cluster Table),数据按主键来组织,也就是说主键索引和数据是在一起的,数据按主键的顺序物理分布。数据表的另一种常见形式是非簇表,其索引是有序的,而数据是无序的。

5、实现了缓冲管理,不仅能缓冲索引也能缓冲数据,并且会自动创建散列索引以加快数据的获取。相比之下,MyISAM只是缓存了索引。

6、支持外键。

7、支持热备份。

二、MyISAM存储引擎

MyISAM是MySQL5.0/5.1的默认引擎,但MySQL官方的重心早已不在MyISAM引擎上了,近些年来,MyISAM一直没有大的改进,由于它有许多缺陷,如不支持事务、灾难恢复性差,所以不建议在生产环境中使用。

以下是MyISAM的一些特性。

1、可以配合锁,实现操作系统下的复制备份、迁移。

2、使用表级锁,并发性差。

3、支持全文检索(MySQL InonoDB在5.6以后也支持全文检索)。

4、主机宕机后,MyISAM表易损坏,灾难恢复性不佳。

5、无事务支持。

6、只缓存索引,数据的缓存是利用操作系统缓冲区来实现的。可能引发过多的系统调用且效率不佳。

7、数据紧凑存储,因此可获得更小的索引和更快的全表扫描性能。

三、MEMORY存储引擎

MEMORY存储引擎提供“内存”表,也不支持事务、外键。

使用内存表(内存引擎)可以显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果,但也有如下这些不足之处。

使用的是表级锁,虽然内存访问快,但如果频繁地读写,表级锁可能会成为瓶颈所在。

只支持固定大小的行。VARCHAR类型的字段会存储为固定长度的CHAR类型,浪费空间。

不支持TEXT、BLOB字段。当有些查询需要使用到临时表(使用的也是MEMORY存储引擎)时如果表中有TEXT、BLOB字段,那么会转化为基于磁盘的MyISAM表,严重降低性能。

由于内存资源成本昂贵,一般不建议设置过大的内存表,如果内存表满了,就会在MySQL错误日志里发现类似“The table‘table_name’is full”这样的错误,可通过清除数据或调整内存表参数来避免报错。

服务器重启后数据会丢失,复制维护时需要小心。

四、ARCHIVE存储引擎

ARCHIVE存储引擎是被设计用来存储企业中的大量流水数据的存储引擎。ARCHIVE引擎使用zlib无损数据压缩,让数据都保存在压缩的存档表中。当数据被插入时,它们被压缩。

它只支持INSERT和SELECT,支持自增键及其上的索引,不支持其他索引。它适合做日志记录、用户行为分析,不需要UPDATE、DELETE和索引的数据。

下图为各种存储引擎的特性介绍

文章基于MySQL DBA修炼之道整理,版权属于原作者

MYSQL存储引擎笔记相关推荐

  1. cms文章 mysql存储_MySQL存储引擎笔记

    MySQL存储引擎笔记存储引擎概述插件式存储引擎是MySQL的重要特性之一,用户可以根据应用的需要选择如何存储和索引数据.是否使用事物等 www.2cto.com 特点MyISAMInnoDBMemo ...

  2. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  3. mysql存储引擎静态表_MySQL存储引擎(表类型)的选择

    一.MySQL存储引擎概述 MySQL与多数数据库不同的是包含存储引擎这一特性,用户可以根据应用的需要选择合适的存储引擎来使存储和索引数据,以及是否使用事务等.MySQL5.0支持的存储引擎包括MyI ...

  4. mysql 存储引擎 面试_搞定PHP面试 - MySQL基础知识点整理 - 存储引擎

    MySQL基础知识点整理 - 存储引擎 0. 查看 MySQL 支持的存储引擎 可以在 mysql 客户端中,使用 show engines; 命令可以查看MySQL支持的引擎: mysql> ...

  5. 【超简单】MySQL存储引擎的选择与配置

    [超简单]MySQL存储引擎的选择与配置 存储引擎简介 MySQL中的数据用各种不同的技术存储在文件(或内存)中.每一种技术都使用不同的存储机构,索引技巧,锁定水平并且最终提供广泛的不同的功能和能力. ...

  6. 第 3 章 MySQL 存储引擎简介

    3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所提到的 ISAM,是ISAM的升 ...

  7. 为什么用B+树做索引MySQL存储引擎简介

    索引的数据结构 为什么不是二叉树,红黑树什么的呢? 首先,一般来说,索引本身也很大,不可能全部存在内存中,因此索引往往以索引文件的方式存在磁盘上.然后一般一个结点一个磁盘块,也就是读一个结点要进行一次 ...

  8. Mysql存储引擎详解(MyISAM与InnoDB的区别)

    Mysql存储引擎详解(MyISAM与InnoDB的区别) 存储引擎     MySQL中的数据用各种不同的技术存储在文件(或者内存)中.这些技术中的每一种技术都使用不同的存储机制.索引技巧.锁定水平 ...

  9. 第三篇 :Mysql存储引擎、数据导入导出、管理表记录、匹配条件

    一,存储引擎 1,Mysql工作原理 mysql服务 体系结构     管理工具:    命令 连接池:     (空闲进程.内存.CPU) SQL接口:   (客户端与服务器建立连接传递SQL给my ...

最新文章

  1. C语言编译构建系统,C语言 之建立静态链接库
  2. gunicorn 配置日志
  3. java.net.Socket 解析
  4. 使用validate.js实现表单数据验证
  5. 回溯算法详解:理论+基础类回溯题解
  6. java授权失败_自定义Spring Security的身份验证失败处理方法
  7. acm的ubuntu (ubuntu16.04 安装指南,chrome安装,vim配置,git设置和github,装QQ)
  8. RHCE 学习笔记(5)- 本地用户和组的管理
  9. InnoDB中Adaptive hash index存在问题、Percona改进及一个bug
  10. PHP Mysql or条件排序问题
  11. mysql 存储过程 长字符串_MySQL存储过程--长字符串扯分
  12. 使用PHP+Swoole实现的网页即时聊天工具:PHPWebIM
  13. 中标麒麟6 mysql_中标麒麟(linux)mysql配置记录
  14. 注塑成型工艺中的背压到底有多重要?
  15. windows10/win10开机自启动wifi热点
  16. vue回到顶部(常用)
  17. PocketPC中汉字输入法分析与实现(…
  18. 计算机网络提升培训心得体会,计算机网络培训心得体会.doc
  19. python中怎么打印出表格_Python 表格打印
  20. 窥探SQL: 2.基础查询与排序

热门文章

  1. 用FFMPEG SDK进行视频转码压缩时解决音视频不同步问题的方法(转) PTS DTS
  2. 增量值编码器、单圈绝对值编码器、多圈绝对值编码器
  3. random()模块随机函数的用法总结
  4. 计算机复制粘贴教案,信息技术《文本的复制与移动》教案
  5. rocketmq 消息 自定义_RocketMQ消息轨迹-设计篇
  6. mysql没有开启binlog能恢复数据吗_神了!一个妹子 rm -rf 把公司整个数据库删没了......
  7. git@github.com: Permission denied (publickey).
  8. luogu4267 TamingtheHerd (dp)
  9. HALCON 1D Measure 算子初识
  10. Python3异常处理