脚本宝典收集整理的这篇文章主要介绍了深入理解MySql中Innodb引擎和MyIsam引擎的区别,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
下面我们通过案例来证明MyIsam引擎没有事务,Innodb引擎具有事务。 我建了两个表,innodb_table的表是使用Innodb引擎的,;myisam_table是使用MyIsam引擎的。
我先关闭了Mysql数据库中事务自动提交的设置 1.1 先对MyIsam引擎进行测试,我开启了两个客户端,一个用来插入数据,一个用来查询 1.2 在客户端1号中,我开启了事务,但是没有提交事务,然后使用客户端2号对表进行查询,然后发现能查出我刚刚插入的数据 因此说明MyIsam是没有事务的。1.3 接下来我们测试一下innodb引擎 我开启了事务,然后查询该表,数据为空,然后插入一条数据,但没有提交事务
然后使用客户端2号对innodb_table进行查询,发现数据为空 但是没有提交事务,客户端1号能查询出数据接下来我们把客户端1号的事务进行提交,然后再对客户端2号进行查询 对刚刚插入操作的事务进行提交
使用客户端2号对表进行查询,发现客户端1号提交数据后,客户端2号就能查询到插入的数据使用客户端号,开启事务,然后对innodb_table表中id=1的数据进行update操作,但是没有提交事务
在客户端1号没有提交事情前,客户端2号也对innodb_table表中id=1的数据进行更新,发现执行语句一直处于等待的状态 过几十秒后抛出一个等待超时的错误 然后对客户端1号的更新操作的事务进行提交 在对客户端2号进行id=1的数据进行更新,发现更新完成我们首先对myisam_table锁上一个写锁 锁表命令: lock table 表名 wrITe/read;
当客户端1号对表进行上锁后,客户端2号对该表进行查询,发现一直处于等待的状态,查询不出数据 这是我们就使用客户端1号进行解锁的操作 解锁命令:unlcok 表名 当解锁了之后客户端2号的查询就有结果了在该xx.ibd文件存储了表的结构、索引、以及数据
MyIsam三个文件分别表示: MYD文件:存储了数据 MYI文件: 存储了索引 FRM(sdi)文件:存储了表的结构
InnoDB的索引结构图如下:
MyIsam索引结构图:
最后我们总结一下本文的一些结论:等下次有时间我们在介绍一些innodb为什么有事务功能,而Myisam没有,而主要原因是Innodb引擎比Myisam引擎多了一个redo LOG日志,使得innodb具有事务的功能。更详细的内容我将更新在新的文章中。
以上是脚本宝典为你收集整理的深入理解MySql中Innodb引擎和MyIsam引擎的区别全部内容,希望文章能够帮你解决深入理解MySql中Innodb引擎和MyIsam引擎的区别所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。