对MyISAM与InnoDB这两个数据库引擎的思考

本文详细对比了InnoDB和MyISAM两种MySQL存储引擎的特点。InnoDB支持行级锁和事务,通过建立临时表(undolog)来实现事务的提交与回滚。MyISAM则使用表级锁,不支持事务,但少量搜索速度更快。InnoDB适合大量搜索,数据直接从内存获取,而MyISAM支持全文索引,更适合博客系统等应用。

文章链接:https://codemouse.online/archives/2020-06-03221206

MyISAM用的是表级锁
InnoDB用的是行级锁

  • 事务是如何实现的?
    通过建立一个临时表(undolog),所有的操作都存放在临时表中,当事务确定的时候,才将临时表的内容写入到原来的表中。而回滚操作也就是丢弃这个临时表,原先表保持不变,也就是回滚了。

  • 为什么InnoDB支持事务而MyISAM不支持?
    因为MyISAM用的是表级锁,如果用了两条数据,表被锁住了,第二条数据无法修改变动。

  • InnoDB与MyISAM有什么区别?
    区别在于,InnoDB查表的时候,将数据存放在叶子节点中,而MyISAM的叶子节点存放的是一个索引,通过这个索引去磁盘中获取数据。

  • 速度方面有何区别?
    少量搜索的时候MyISAM更占优势一点,因为叶子节点上存储的是索引,一开始不用预先加载太多的资源,但是大量搜索的时候,因为每获取一条数据,他都要去磁盘获取一次,特别消耗时间。而Innodb是由于数据已经在内存中加载好了,获取特别的快。

  • 为什么Innodb不支持全文索引,而MyISAM支持全文索引?
    因为Innodb会将数据全加载了,这样会特别消耗内存,而MyISAM只是加载了一个索引,消耗内存不大。例如博客系统,如果查询的话,使用Innodb就会将大量文章都加载,会消耗大量的内存。加上叶子结点本身不适合大量数据的存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值