文章目录

  • 一、InnoDB 和 MyISAM的不同

一、InnoDB 和 MyISAM的不同

  • InnoDB 支持事务,MyISAM 不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务;

  • InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的InnoDB表转为MYISAM会失败; (外键现在用的也不多,因为它关联性太强,如果要删除一个表,会因为有外键的关联而导致删除失败。通常是通过 table a = table b on a.id = b.id 这种两表关联的方式来间接替代外键作用 )

  • InnoDB支持表级锁、行级锁,默认为行级锁;而 MyISAM 仅支持表级锁。InnoDB 的行锁是实现在索引上的,而不是锁在物理行上。如果访问未命中索引,也是无法使用行锁,将会退化为表锁

  • InnoDB是聚集索引,使用B+Tree作为索引结构,数据文件是和(主键)索引绑在一起的;MyISAM是非聚集索引,它也是使用B+Tree作为索引结构,但是索引和数据文件是分离的,索引保存的是数据文件的指针。

  • InnoDB 必须要有主键,MyISAM可以没有主键;InnoDB 如果我们没有明确去指定创建主键索引。它会帮我们隐藏的生成一个 6 byte 的 int 型的索引作为主键索引。

  • InnoDB辅助索引和主键索引之间存在层级关系;MyISAM辅助索引和主键索引则是平级关系。即:InnoDB 如果添加其他辅助索引,辅助索引查询就需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也相应都会很大。(比如表中有id(主键),name,age 字段,我们创建一个主键索引,再来创建一个name索引,层级关系如下图所示)

  • InnoDB不保存表的具体行数,执行select count(*) from table时需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快(注意不能加有任何WHERE条件);

  • Innodb不支持全文索引,而MyISAM支持全文索引,在全文索引领域的查询效率上MyISAM速度更快高;(MySQL 5.7 版本以后,InnoDB也支持全文索引了)


MySQL(三):InnoDB和MyISAM相关推荐

  1. 一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM经常遇到有人向我咨询这个问题,其实呢,网上帖子很多,也说的都对,但是呢,看客可不一定是真的理解了.所以今天在这里用最简短的语言让你明白这些 ...

  2. mysql聚集索引 myisam_一句话说清聚集索引和非聚集索引以及MySQL的InnoDB和MyISAM

    版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/21aspnet/article/details/89303988 聚集索引和非聚集索引以及MySQL的 ...

  3. mysql索引innodb和myisam的区别

    引用 引用 区别 InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一 ...

  4. MySQL 数据库 InnoDB 和 MyISAM 数据引擎的差别

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISAM类型的表强调的是 ...

  5. mysql的InnoDB和MyISAM对比

    InnoDB和MyISAM是在使用MySQL最常用的两个表类型. MyISAM:这个是默认类型,它是基于传统的ISAM类型,ISAM是Indexed Sequential Access Method ...

  6. MySQL之innodb与myisam:锁 事务 外键 主键 存储结构 存储大小 索引 count 注重点

    行锁:innodb支持行锁 事务:innodb支持事务 外键:MyISAM不支持InnoDB支持 主键:myisam允许没有索引和主键的表存在:innodb如果没有设定主键或者非空唯一索引,会生成一个 ...

  7. 面试题:MySQL的innodb和myisam

    一 Innodb 1. 简介 索引是一种排好序的用于快速查找的数据结构. **根据官网手册InnoDB支持B-tree索引.聚簇索引(Clustered indexes).全文索引(Full-text ...

  8. MySQL的InnoDB和MyISAM比较

    InnoDB 1)虽然不支持用户创建聚族索引,但InnoDB会对主键建立聚簇索引.如果你不指定主键,InnoDB会用一个具有唯一且非空值的索引来代替.如果不存在这样的索引,InnoDB会定义一个隐藏的 ...

  9. MySQL存储引擎之Myisam和Innodb总结性梳理

    Mysql有两种常用的存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名 ...

最新文章

  1. banana pi 板上跑树莓派镜像
  2. SQL Server的一个不显眼的功能 备份文件的分割
  3. Build Search for Common Use Cases
  4. Java:异常处理的一些注意事项
  5. 利用宝塔linux面板+苹果CMS搭建电影网站(二)网站的配置+电影资源的爬取上传
  6. win7下.NET 2.0未在web服务器上注册的问题
  7. python如何读取csv文件某几行某几列_关于python:读取.csv文件时,我似乎无法指定列dtypes...
  8. 暑期训练日志----2018.8.12
  9. Redis能干啥?细看11种Web应用场景
  10. vlan划分_基于MAC地址划分VLAN配置示例
  11. Fusion Studio 17 for Mac(视频后期特效合成软件)
  12. Python-序列常用方法 + * += extend append方法区别
  13. Linux设备驱动——驱动模型
  14. 传输线理论 1/4波长阻抗变换器的分析匹配
  15. html字体随页面大小变化,字体大小随网页大小变化
  16. [从源码学设计]蚂蚁金服SOFARegistry之服务上线
  17. vue : 无法加载文件 C:\Users\xxx\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.
  18. Docer容器的介绍(一)-------Docker基本概念和框架
  19. Downloading https://ultralytics.com/assets/Arial.ttf to /data/..../.config/Ultralytics/Arial.ttf
  20. 语音播报警示器技术要求

热门文章

  1. git push代码时自动化添加reviewer
  2. 【linux命令】我常用的Linux命令
  3. 【java】统计正数和负数的个数然后计算这些数的平均值
  4. 软件测试工程师和技术支持工程师哪个更有钱途,以后会发展更好?
  5. (python) 1200000有多少个约数(只计算正约数)
  6. Lumen企业站内容管理实战 - 欢迎页面
  7. CATIA CAA二次开发专题(八)---自定义特征模型
  8. python 报错traceback怎么解决_浅谈python出错时traceback的解读
  9. 数据分析案例-基于PCA主成分分析法对葡萄酒数据进行分析
  10. 英语语法总结--动词不定式