阿里P8架构师谈:MySQL有哪些存储引擎,各自的优缺点,应用场景
经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎
经常面试都会问到MYSQL有哪些存储引擎,以及各自的优缺点。今天主要分享常见的存储引擎:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)等,以及最常用的MyISAM与InnoDB两个引擎 ,文章尾部有两者的详细比较。 MySQL常用存储引擎介绍 1.InnoDB 引擎(MySQL5.5以后默认使用) MySQL 5.5 及以后版本中的默认存储引擎,他的优点如下: 2.MyISAM引擎 特性如下: 3.MEMORY 存储引擎 提供内存表,也不支持事务和外键。显著提高访问数据的速度,可用于缓存会频繁访问的、可以重构的数据、计算结果、统计值、中间结果。 缺点如下: MySQL存储引擎MyISAM与InnoDB如何选择 1.两种存储引擎的大致区别表现在: 1)InnoDB支持事务mssql数据库空间,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。 2)MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用 3)InnoDB支持外键,MyISAM不支持 4)从MySQL5.5.5以后,InnoDB是默认引擎 5)InnoDB不支持FULLTEXT类型的索引 6)InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时MyISAM也需要扫描整个表。 7)对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引。 8)清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表。 9)InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%' 有人说MYISAM只能用于小型应用,其实这只是一种偏见。 如果数据量比较大,这是需要通过升级架构来解决,比如分表分库,读写分离,而不是单纯地依赖存储引擎。 现在一般都是选用InnoDB了,主要是MyISAM的全表锁,读写串行问题,并发效率锁表,效率低,MyISAM对于读写密集型应用一般是不会去选用的。 总之: 1.MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。 2.MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。 如果你还想了解mysql的各种锁:表锁、行锁、乐观锁等,可以点击查看: 阿里P8架构师谈:MySQL行锁、表锁、悲观锁、乐观锁的特点与应用 以上就是MySQL引擎的介绍,以及之间的区别 ,以下是阿里P8架构师谈架构设计18精讲。 领取方法 关注+转发后,私信关键词 【架构】即可学习! 重要的事情说三遍,转发、转发、转发后再发私信,才可以拿到哦! (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |