`

MyISAM,Memory,InnoDB

阅读更多

MyISAM:

表锁:表级锁。注意不要让它成为瓶颈

不支持自动数据恢复:服务器崩溃或停电后,就应该在使用之前检查和执行可能的修复。

不支持事务:实际上,MyISAM甚至不保证单个命令会完成。如果在多行UPDATE的中途有错误发生,一些行会被更新,而另外一些则不会。

只有索引被缓存在内存中:MyISAM中缓存了MYSQL进程内部的索引,并保存在键缓冲区。操作系统缓存了表的数据,因此在MYSQL5.0中须进行昂贵的系统调用来取得它。

紧密存储:行被紧紧地保存在一起,这样磁盘上的数据就能行到小的磁盘占用和快速的全表扫描。


Memory

表锁:和MyISAM一样,但Memory表上的查询都较快,所以通常不是问题。

不支持动态行:动态行即可变长度行,因此它们根本不支持BLOG和TEXT字段,即使varchar(5000)也会变成char(5000).这样如果大多数值较小,则是巨大的内存浪费。

哈希索引是默认索引类型

没有索引统计

重启后丢失数据:Memory表不会把任何数据持久到磁盘,因此当服务器重启后即使表的定义还在,数据也会丢失。


InnoDB:

事务性:InnoDB支持事务和四种事务隔离级别

外键:在Mysql5.0中,InnoDB是唯一支持外键的存储引擎。另外的存储引擎在CREATE TABLE命令中可以接受外键,但却不会强制执行。一些第三方引擎,比哪SolidDB,也在存储引擎层次支持它。

行级锁:锁设定于行一级,不会向上传递并且也不会阻塞选择----标准选择根本不会设定任何锁,它有很好的并发特性

多版本:InnoDB使用多版本并发控制,这样在默认情况下可能选择读取陈旧的数据。事实上,它的MVCC架构增添了很多复杂的和意料之外的行为。如果使用InnoDB,就应该仔细阅读InnoDB手册。

按主键聚集:所有的InnoDB表都是按主键聚集的。可以在架构设计中运用这一点

所有索引包含主键列:索引按照主键引用行,因此如果不把主键维持得很短,索引就增长得很大。

优化的缓存:InnoDB把数据和内存缓存在缓冲区池里。它也会自动构建哈希索引以加快行读取。

未压缩的索引:索引没有使用前缀压缩,因此可能会比MyISAM表的索引大很多。

数据装载缓慢:在MyISAM5.0中,InnoDB不会特别优化数据加载。它一次构建一行的索引,而不是按照排序进行构建。这会导致数据加载缓慢。

阻塞AUTO_INCREMENT:在Mysql5.1之前的版本中,InnoDB使用了表级锁来产生每个新的AUTO_INCREMENT值。

没有缓存的COUNT(*)值:和MyISAM表或Memory表不同,InnoDB表不会把表的行数保存在表中,这意味着没有WHERE子句的COUNT(*)查询不会被优化掉,并且需要全表或索引扫描。


 

分享到:
评论

相关推荐

    MySQL存储引擎简介及MyISAM和InnoDB的区别

    Memory:将所有数据保存在RAM中,在需要快速查找引用和其他类似数据的环境下,可提供极快的访问。 Merge:允许MySQL DBA或开发人员将一系列等同的MyISAM表以逻辑方式组合在一起,并作为1个对象引用它们。对于

    Mysql InnoDB和MyISAM区别原理解析

    mysql支持很多表类型的表(即存储引擎),如myisam、innodb、memory、archive、example等。每种存储引擎都有自己的优点和缺点,充分的理解每种存储引擎,有助于合理的使用它们。有人认为在同一个数据库中使用多种...

    Mysql知识详解(内容非常丰富)

    mysql常用引擎包括:MYISAM、Innodb、Memory、MERGE MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以...

    简单了解mysql InnoDB MyISAM相关区别

    mysql支持很多表类型的表(即存储引擎),如myisam、innodb、memory、archive、example等。每种存储引擎都有自己的优点和缺点,充分的理解每种存储引擎,有助于合理的使用它们。有人认为在同一个数据库中使用多种...

    既然Mysql有内存引擎Memory,为什么还需要Redis

    随着对于Mysql的了解,我们知道Mysql有三种常用的数据引擎,分别是:MYISAM,INNODB,MEMORY。其中由于MYISAM不支持事务,行锁等原因的限制,被MySQL官方也逐渐放弃,这里暂不做讨论。但不知道大家是否有和我最初一样的...

    MySQL课程之MySQL存储引擎入门

    MySQL 支持多种存储引擎,目前的存储引擎有 MyISAM 、 InnoDB 、 BDB 、 Memory 、 Merge 、 Archive 、 Federated 、 BLACKHOLE 、 Cluster/NDB 、 CSV 、 Example 等。其中, InnoDB 、 NDB 、 BDB 支持事务,其他...

    MySQL 学习总结 之 初步了解 InnoDB 存储引擎的架构设计

    主要有 MyISAM、InnoDB、Memory等等。而现在互联网中,基本都是使用 InnoDB 存储引擎,所以接下来我将简单总结自己关于 InnoDB 存储引擎的学习,比较简单的介绍 InnoDB 存储引擎里面的组件。 二、缓冲池 我们现在都...

    MySQL数据库:MySQL存储引擎.pptx

    MySQL 5.7支持的存储引擎有:InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV和BLACKHOLE等。 可以利用语句:show engines; 查看系统所支持的引擎类型。;1.InnoDB存储引擎 InnoDB是事务型数据库的首选引擎...

    Mysql存储引擎特性总结

    Myisam BDB Memory InnoDB Archive 存储限制 没有 没有 有 64TB 没有 事务安全   支持   支持   锁机制 表锁 页锁 表锁 行锁 行锁 B树索引 支持 支持 支持 支持   哈希索引     支持 支持   全文...

    Mysql InnoDB引擎的索引与存储结构详解

    MySQL默认的存储引擎是MyISAM,其他常用的就是InnoDB,另外还有MERGE、MEMORY(HEAP)等。 主要的几个存储引擎 MyISAM管理非事务表,提供高速存储和检索,以及全文搜索能力。 MyISAM是Mysql的默认存储引擎。当create...

    MySQL中索引与视图的用法与区别详解

    前言 本文主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关内容,分享出来供大家...MyISAM和InnoDB存储引擎的表默认创建BTREE索引, MEMORY存储引擎的表默认创建HASH索引。 二、创建索引 create index语法为

    MySQL中InnoDB存储引擎的锁的基本使用教程

    MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 各种锁特点 表级锁:开销小,加锁快;...

    Mysql DBA 20天速成教程

    基本知识1.mysql的编译安装2.mysql 第3方存储引擎安装配置方法3.mysql 主流存储引擎(MyISAM/innodb/MEMORY)的特点4.字符串编码知识5.MySQL用户账户管理6.数据备份/数据入导出7.mysql 支持的基本数据类型8.库/表/字段...

    MySQL数据库存储引擎和分支现状分析

    MySQL随着相应的各主创和内部开发人员的离去,缔造了...本文大致讲解一下MySQL目前除了主要的 MyISAM、InnoDB、Heap(Memory)、NDB 等引擎之外的其他引擎的发展和现状,以及MySQL主干以外的分支的状况,为了我们未来更

    MySQL存储引擎总结

    主要介绍了MySQL存储引擎总结,本文讲解了什么是存储引擎、MyISAM、InnoDB、MEMORY、MERGE等内容,需要的朋友可以参考下

    linux下改良版本mysqldump来备份MYSQL数据库

    表结构是MYISAM,INNODB,MEMORY三者混合。 所以单纯用HOTCOPY工具恐怕有点困难。所以我今天简单变了一下我上次写的关于用OUTFILE来备份MYSQL的脚本。 可以解决上面说的三个缺点。 1、备份脚本内容 [david_yeung@...

    mysql索引和explain的详解

    MyISAM和InnoDB存储引擎:只支持B+ TREE索引, 也不能够更换 MEMORY/HEAP存储引擎:支持HASH和BTREE索引 B树图示 B树是为了磁盘或其它存储设备设计的一种多叉(下面你会看到,相对于二叉,B树每个内结点有多个分支,...

    如何选择合适的MySQL存储引擎

    MySQL有多种存储引擎,MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。

    MYSQL 解锁与锁表介绍

    比如,MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但...

Global site tag (gtag.js) - Google Analytics