`

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(*)查询不会被优化掉,并且需要全表或索引扫描。


 

分享到:
评论

相关推荐

    myisam和innodb的区别

    除了MyISAM和InnoDB之外,MySQL还提供了其他几种存储引擎,如MEMORY、BlackHole等,各有特色: - **MEMORY存储引擎**:将数据完全存储在内存中,适用于需要高速访问的小型数据集。需要注意的是,数据可能因服务器...

    MySQL创建数据表时设定引擎MyISAM/InnoDB操作

    常用的存储引擎有MyISAM、InnoDB、Memory等,其中MyISAM和InnoDB是最常用的两种。 MyISAM是MySQL的默认存储引擎之一,它是一个基于表的锁定、非事务型存储引擎。MyISAM对表的读写操作在大多数情况下都不需要锁表,...

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

    在其他存储引擎中,BDB提供了一个事务处理的替代选项,Memory引擎将所有数据保留在内存中,适用于快速访问的小型临时表,Merge引擎允许组合多个MyISAM表,Federated引擎实现了跨服务器的数据集成,Archive引擎用于...

    MySql中启用InnoDB数据引擎的方法.docx

    MySQL默认配置了多种存储引擎,例如MyISAM、InnoDB、BDB、Memory、Merge、Archive、Federated、Cluster/NDB以及一些其他特殊引擎如CSV和Blackhole。每个引擎都有其适用的场景,例如MyISAM适合读取密集型应用,而...

    Mysql InnoDB和MyISAM区别原理解析

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

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

    在本文中,我们将深入探讨其中四个常见的引擎:MYISAM、InnoDB、Memory和MERGE。 1. MYISAM引擎 MYISAM是MySQL早期的主要引擎,它以全表锁为基础,这意味着在执行读写操作时会锁定整个表,导致并发性能较差。MYISAM...

    简单了解mysql InnoDB MyISAM相关区别

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

    MySQLDBA试题MySQLDBA面试题PDF

    1.请用图框的方式大致地描绘出MySQL架构体系. 第一层:client Connector ...第二层:MYSQL server模块 thread connection pool/cache ...myisam/innodb/blackhole/archive/memory/merge/NDB 存储引擎是基于表

    MySQL存储引擎简介

    这些存储引擎,例如MyISAM、InnoDB、BDB、MEMORY等,各有其特定的特性与适用场景,从而使得MySQL成为一个在多种场景下都能表现优秀的数据库系统。 首先,MySQL的存储引擎是插件式的,意味着可以根据不同的应用需求...

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

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

    MySQL innodb 技术内幕

    MySQL 提供了多种存储引擎,包括 InnoDB、MyISAM、NDB、MEMORY、Archive、Federated 等。每种存储引擎都有其特点和优缺点。 ### 1.3.1 InnoDB 存储引擎 InnoDB 存储引擎是 MySQL 的默认存储引擎,它支持外键、...

    mysql架构与存储引擎(MySQL逻辑架构、InnoDB引擎、MyISAM引擎、存储引擎选择).docx

    除了InnoDB和MyISAM之外,MySQL还支持多种其他的存储引擎,如Memory、Archive、Federated等,这些引擎各有特色,可以满足不同的业务需求。 #### 四、存储引擎选择 选择合适的存储引擎对于保证数据库性能和稳定性至...

    MySQL数据库存储引擎探析.pdf

    除此之外,MySQL还提供了其他几种存储引擎,如NDBCluster适用于分布式环境,Maria是对MyISAM的升级版,Falcon是MySQL公司正在研发的事务性存储引擎,Memory引擎用于存储在内存中的临时表,Archive用于压缩存储日志,...

    MYSQL中 TYPE=MyISAM 错误的解决方法

    在MySQL数据库中,存储引擎是决定数据如何存储和...在遇到“TYPE=MyISAM”错误时,只需简单地将关键字更改为“ENGINE=MyISAM”,同时了解MyISAM和InnoDB等不同存储引擎的特点,以便更好地适应和管理你的数据库系统。

    MySQL数据库基础及技术演进.pdf

    MySQL的架构设计中,不同的存储引擎如MyISAM、InnoDB、Memory、Infobright、blackhole、federated以及RocksDB/TokuDB,分别适用于不同的读写模式和场景。MyISAM适合读密集型应用,InnoDB则支持事务处理,提供更高的...

    mysql面试知识点及大厂面试题

    MySQL 提供了多种存储引擎,包括 MyISAM、InnoDB、MEMORY 等。其中,MyISAM 和 InnoDB 是两种最常用的存储引擎。 1.1、MyISAM MyISAM 是 MySQL 5.5 之前的默认存储引擎。它具有以下特点: * 只有表级锁,不支持...

    mysql笔试题1

    1. 存储引擎:MySQL支持多种存储引擎,如MyISAM、InnoDB、Memory等。它们决定了数据如何存储、索引创建、事务处理等方面。例如,MyISAM不支持事务,适合读取密集型应用,而InnoDB提供事务处理、行级锁定,适合写入...

    mysql性能优化与诊断

    - **空间占用**:MyISAM通常比InnoDB占用的空间更少,因为InnoDB为了支持事务处理和行级锁定等特性,需要额外的开销来确保数据的一致性。 - **全文索引支持**:MyISAM支持全文索引,而早期版本的InnoDB则不支持这一...

    MySQL InnoDB小结1

    除了InnoDB,MySQL还有其他存储引擎,如MyISAM适合于读密集型应用,不支持事务但提供全文搜索;Memory引擎将数据存储在内存中,适用于临时表;而Archive引擎则用于存储历史数据,如日志,使用行锁并以高压缩比存储...

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

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

Global site tag (gtag.js) - Google Analytics