innodb和myisam的总结

innodb介绍

InnoDB,是MySQL的数据库引擎之一,现为MySQL的默认存储引擎,为MySQL AB发布binary的标准之一。InnoDB由Innobase Oy公司所开发,2006年五月时由甲骨文公司并购。与传统的ISAM与MyISAM相比,InnoDB的最大特色就是支持了ACID兼容的事务(Transaction)功能,类似于PostgreSQL。
innodb架构图

innodb特点

1.事务型数据库的首选引擎,支持ACID事务,支持行级锁定。
2.InnoDB是为处理巨大数据量时的最大性能设计。
3.InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。
4.InnoDB存储它的表&索引在一个表空间中,表空间可以包含数个文件(或原始磁盘分区)。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制为2GB的操作系统上。
5.InnoDB默认地被 包含在MySQL二进制分发中。
6.自适应哈希索引:InnoDB会监控对表上各索引页的查询执行情况,如发现建立哈希索引可以提升速度,则建立哈希索引,这是过程不需要用户干预。

myisam介绍

MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。

myisam特点

虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。

它们之间的区别

首先大家可以看一下下面这张图
在这里插入图片描述
通过上面的观察,可以发现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

对锁的理解

这里我对锁做一个我自己的理解:锁可以看做银行的ATM机,当一个人进去后,其他人就被隔离在外面了,但是表锁有个缺点,如果系统出错导致ATM机的进入失败就会产生连锁效应,所有的机器会自行锁定,无法使用。而行锁就不一样了,它是局部的瘫痪,互不影响。

总结优缺点

myisam
优点:查询数据相对较快,适合大量的select,可以全文索引。
缺点:不支持事务,不支持外键,并发量较小,不适合大量update

innodb:
优点:支持事务,支持外键,并发量较大,适合大量update
缺点:查询数据相对较快,不适合大量的select

如何选择innodb和myisam

MYISAM和INNODB是Mysql数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。INNODB会支持一些关系数据库的高级功能,如事务功能和行级锁,MYISAM不支持。MYISAM的性能更优,占用的存储空间少。所以,选择何种存储引擎,视具体应用而定。

如果你的应用程序一定要使用事务,毫无疑问你要选择INNODB引擎。但要注意,INNODB的行级锁是有条件的。在where条件没有使用主键时,照样会锁全表。比如DELETE FROM mytable这样的删除语句。

如果你的应用程序对查询性能要求较高,就要使用MYISAM了。MYISAM索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于INNODB。压缩后的索引也能节约一些磁盘空间。MYISAM拥有全文索引的功能,这可以极大地优化LIKE查询的效率。

现在一般都是选用innodb了,主要是myisam的全表锁,读写串行问题,并发效率锁表,效率低myisam对于读写密集型应用一般是不会去选用的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值