参考:https://www.cnblogs.com/xiaohaillong/p/6079551.html

1.

a.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候,Innodb会在内存中建立缓冲池,用于缓冲数据和索引。但是,该引擎是不支持全文搜索的。同时,启动也比较的慢,它是不会保存表的行数的。当进行Select count(*) from table指令的时候,需要进行扫描全表。所以当需要使用数据库的事务时,该引擎就是首选。由于锁的粒度小,写操作是不会锁定全表的。所以在并发度较高的场景下使用会提升效率的。

b.MyIASM引擎,它是MySql的默认引擎,但不提供事务的支持,也不支持行级锁和外键。因此当执行Insert插入和Update更新语句时,即执行写操作的时候需要锁定这个表。所以会导致效率会降低。不过和Innodb不同的是,MyIASM引擎是保存了表的行数,于是当进行Select count(*) from table语句时,可以直接的读取已经保存的值而不需要进行扫描全表。所以,如果表的读操作远远多于写操作时,并且不需要事务的支持的。可以将MyIASM作为数据库引擎的首先。

补充2点:

c.大容量的数据集时趋向于选择Innodb。因为它支持事务处理和故障的恢复。Innodb可以利用数据日志来进行数据的恢复。主键的查询在Innodb也是比较快的。

d.大批量的插入语句时(这里是INSERT语句)在MyIASM引擎中执行的比较的快,但是UPDATE语句在Innodb下执行的会比较的快,尤其是在并发量大的时候。

2.两种引擎所使用的索引的数据结构是什么?

答案:都是B+树!

MyIASM引擎,B+树的数据结构中存储的内容实际上是实际数据的地址值。也就是说它的索引和实际数据是分开的,只不过使用索引指向了实际数据。这种索引的模式被称为非聚集索引。

Innodb引擎的索引的数据结构也是B+树,只不过数据结构中存储的都是实际的数据,这种索引有被称为聚集索引。

最新文章

  1. RMS:不能对生产服务器使用测试清单
  2. ajax同步处理(使得JS按顺序执行)
  3. Swift基础--Swift中的分类以及在分类中扩展init方法的注意事项
  4. Nginx 使用 sever 段规则屏蔽恶意 User Agent
  5. img的hover事件闪动
  6. ThinkPHP 获取get post参数与I方法
  7. Eclipse启动提示Failed to load the JNI shared library JVM.dll
  8. SD卡驱动分析(二)
  9. TKinter的常用组件
  10. 使用wget备份禅道
  11. struts2+Hibernate4+spring3+EasyUI环境搭建之二:搭建spring
  12. Cisco中删除flash通过tftp服务器恢复
  13. Windows 右键添加「cmd 打开」
  14. expdp 备份数据库-附带报错信息
  15. AspxTreeList获取选中项的值
  16. PHP数组按引用传递
  17. MyBatis_CURD
  18. 初学sql
  19. (转)FIDDER教程
  20. python面试题之如何用Python输出一个斐波那契数列

热门文章

  1. 第六篇--MFC美化界面
  2. DNS的原理和解析过程
  3. docker上运行mysql服务器
  4. ffmpeg 任意文件读取漏洞/SSRF漏洞 (CVE-2016-1897/CVE-2016-1898)
  5. bootstrap table记录一下
  6. NODEJS对象
  7. noip模拟22[d·e·f]
  8. 大都市meg DFS序
  9. selenium元素定位之 八大元素定位
  10. WPF 线程开启等待动画