首页 > 其他分享 >MYISAM和INNODB的区别

MYISAM和INNODB的区别

时间:2024-01-14 22:24:04浏览次数:23  
标签:区别 聚集 索引 INNODB MYISAM 数据 主键

  • INNODB支持事务,而MYISAM不支持事务。

  • INNODB支持外键,而MYISAM不支持外键。

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

  • InnoDB 中 B+ 树的数据结构中存储的都是实际的数据,这种索引有被称为聚集索引。

关于索引:

  • 唯一索引:唯一索引不允许两行具有相同的索引值。

  • 主键索引:为表定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的,并且不能为空。

  • 聚集索引(Clustered):表中各行的物理顺序与键值的逻辑(索引)顺序相同,每个表只能有一个。

  • 非聚集索引(Non-clustered):非聚集索引指定表的逻辑顺序。数据存储在一个位置,索引存储在另一个位置,索引中包含指向数据存储位置的指针。可以有多个,小于 249 个。

INNODB的非主键索引:叶子节点(最下面一层)存的是当前索引的值和主键的值(聚集索引的值),通过当前索引找到对应的主键索引(聚集索引的值)。再通过主键索引再去找到对应的数据。这样保证一致性和节省内存存储空间。

联合索引的图形:排序规则:比较每个索引的大小,先按第一个索引排大小,如果都相等,那么就看第二个索引。(从左到右),如果没有用第一个索引的话就会失效,因为跳过第一个索引的话,数据在整张表中不是有序的,那么就会扫描整表。

为什么建议INNODB的表建主键,并且推荐整型自增作为主键?

如果没有建立主键,那么mysql会从我们所建的表中选择一列数据不重复的作为B+tree的建立索引。如果没有合适的列,那么mysql会建立一个隐藏列来组织整张表的数据。所以需要自己建立一个主键就可以减少Mysql工作。整型因为效率高并且比字符串占用内存小。自增:如果不是自增会增加树的分裂和平衡旋转,那么效率就会变低。

标签:区别,聚集,索引,INNODB,MYISAM,数据,主键
From: https://www.cnblogs.com/mafu-blogs/p/17964232

相关文章

  • Bash shell中四种算术运算方式的区别与联系简介
    在bashshell中,整数的运算也会偶尔遇到。为了彻底弄清其中的奥秘,我们通过实例验证的方式来探索一下常见的四种运算中的区别与联系。实例验证之前,我们来定义一组变量,并对其赋值:[root@GeekDevOps~]#a=9;b=13;c=-1;d=+4;e=7.2[root@GeekDevOps~]#echo$a$b$c$d$e913-1+4......
  • Bash shell中bash、sh、source及“.”点等五种执行方式的区别与联系
    在众多Linux发行版中bashshell可谓是随处可见。作为众多发行版的首选shell,对于bashshell的学习对我们来说,显得格外重要。在学习bashshell的过程中,bash、sh、source及英文输入状态下的点号经常交替出现,他们看起来作用都差不多,但是深究下去,他们也有着不小的区别与联系。下面就让......
  • TCP之三次握手四次挥手与UDP区别
    目录1TCP三次握手四次挥手1.1数据包说明1.1.1TCP数据包1.1.2UDP数据包1.1.3TCP和UDP差异1.1.4TCP可靠性传输机制1.2三次握手1.2.1三次握手定义1.2.2三次握手问题1.2.2.1问题引入分析1.2.2.2历史连接1.2.2.3同步双方初始序列号1.2.2.4避免资源浪费1.3四次挥手1TCP......
  • 第十二节:红黑树性质、相对平衡的原理、与AVL树的区别
    一.        二.        三.         !作       者:Yaopengfei(姚鹏飞)博客地址:http://www.cnblogs.com/yaopengfei/声     明1:如有错误,欢迎讨论,请勿谩骂^_^。声     明2:原创博客请在转载......
  • 固态硬盘与机械硬盘有什么区别?
    固态硬盘和机械硬盘的区分方式有很多,首先从外形上,机械硬盘的体积要比固态硬盘大,所以重量也要比固态硬盘重,其次在售价方面,固态硬盘售价要比机械硬盘贵很多。在一般情况下,台式电脑中的基本都是机械硬盘,但随着固态硬盘的发展,随着市场和用户的各种需求,固态硬盘渐渐成为用户选购的重心......
  • Spring Boot和 Spring Cloud的区别;单体架构与微服务架构的区别以及优缺点
    SpringBoot简介SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,SpringBoot致力于在蓬勃发展的快速应用开发领域(rapidapplicat......
  • 筛选列表中的元素 与 删除元素中的字符串 的区别
    字符串分割为列表re.split(pat,string)pandas.Series([string]).astype(str).str.split(pat)先删除字符串首尾字符串,再分隔re.split(pat,string2.sptrip())先删除字符串中的字符串,再分隔re.split(pat,string.replace(string2,"")筛选列表中的元素[itemforiteminlisif......
  • # w 与[a-zA-Z0-9_] 区别在于 w 匹配了unicode字符 包含中文!
    #importre#importpandasaspd#pat(字母数字-)以外的任何(字符串)#根据pat分割字符串defmyfun(pat:str,string=r'12-en中文'):lis=re.split(pat,string)ser=pd.Series(string).str.split(pat)display(lis,pd.DataFrame(ser))myfun(r"......
  • G1中region不同区区别
    有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。https://store.amazingmemo.c......
  • MySQL InnoDB ReplicaSet安装文档
    MySQL副本集介绍MySQLInnoDBReplicaSet(也叫MySQL副本集,有些地方也翻译成MySQL复制集)是在MySQL8.0.19版本(2020-01-13Released)之后开始支持的,MySQL副本集中拥有一个primary节点,一个或多个secondary节点,它不像MySQLInnoDBCluster一样提供故障自愈和多主模式,但是它提供手......