MyISAM与InnoDB存储引擎的区别

1、InnoDB支持事务,MyISAM不支持事务;

2、InnoDB支持外键,MyISAM不支持外键;

3、InnoDB和MyISAM的索引都是由B+树数据结构实现的,它俩索引的不同为:InnoDB根据索引是否与数据进行绑定将索引分成了聚簇索引和非聚簇索引,InnoDB有一个规定是,表中的每一行数据必须要与某一个索引进行绑定,这个跟数据进行绑定的索引被叫做聚簇索引,InnoDB会首选主键作为聚簇索引,如果这张表没有主键,就选择一个唯一索引作为聚簇索引,如果连唯一索引都没有,MySQL就为这张表创建一个Row_id字段作为聚簇索引。那么聚簇索引是怎么跟数据进行绑定的呢?我们知道一张表中可以有多个索引,每个索引都有自己的B+树结构,但是只有聚簇索引会将数据存储在自己的B+树的叶子节点上,所以当我们基于聚簇索引进行查询的时候,能够直接查询到数据,聚簇索引的查询效率很高,而非聚簇索引的B+树的叶子节点上存储的不是数据,是聚簇索引的值,当我们基于一个非聚簇索引进行查询时,首先查到的是聚簇索引的值,再根据聚簇索引查到数据,非聚簇索引的查询效率不如聚簇索引高,但是一张表中只能有一个聚簇索引,可以有多个非聚簇索引。MyISAM不支持聚簇索引,它是将索引跟数据分开存储的,索引的B+树的叶子节点上存储的是数据的地址,通过索引查询数据时,还要再经过一次寻址才能查到数据。

当我们使用的是InnoDB存储引擎时,我们应该为每张表设计一个主键字段,并且这个字段不宜过大,因为它将被作为聚簇索引,如果聚簇索引过大的话,也会导致非聚簇索引过大。

4、锁的粒度方面的区别:InnoDB支持行锁和表锁,默认行锁;MyIsam只支持表锁,不支持行锁。

5、MyISAM有一个变量专门用来存储每张表中的记录数,InnoDB没有这样的变量,所以在执行select count(*) from user;这样的查询语句时,MyISAM直接在这个变量中取值,查询速度很快,而InnoDB需要进行全表扫描,不如MyISAM快,不过执行带where条件的count查询时,MyISAM也需要进行全表扫描,就不能在这个变量中取了。InnoDB之所以没有这样的变量,是因为它支持事务,当我们为InnoDB的事务设置不同的隔离级别时,这个查询结果是不同的,所以存储这样的变量是没有意义的。

6、在查询效率方面的区别:MyISAM的查询效率高于InnoDB,但写操作的效率不如InnoDB,当我们需要实现的功能只有查询操作时,可以用MyISAM,既有读又有写,就用InnoDB,低版本的MySQL默认使用MyISAM,从MySQL5.5开始,默认存储引擎改成了InnoDB。

7、在全文索引的支持方面:全文索引对于有全文检索需求的应用很有帮助,MyISAM是支持全文索引的,而InnoDB存储引擎从MySQL5.7开始也对全文索引做了支持。当然全文索引只支持使用在char、varchar、text类型的字段上。

8、在数据恢复方面的区别:当MySQL服务发生了崩溃时,MyISAM的数据不好恢复,InnoDB的数据更好恢复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/241978.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

v-if和v-show的区别

v-if 条件性地渲染一块内容,这块内容只会在指令的表达式返回 truthy值的时候被渲染。 /**truthy(真值)指的是在布尔值上下文中,转换后的值为真的值。所有值都是真值,除非它们被定义为 假值(即除 false、0、…

贝叶斯球快速检验条件独立

贝叶斯球 定义几个术语,描述贝叶斯球在一个结点上的动作: 通过(pass through):从当前结点的父结点方向过来的球,可以访问当前结点的任意子结点(父->子)。从当前节点的子结点方向…

hive(2)

-- 复习 CREATE TABLE IF NOT EXISTS dept_partition ( deptno int, dname string, loc string ) partitioned BY(month string) row FORMAT delimited fields terminated BY \t ; DESC dept_partition; show partitions dept_partition; ALTER TABLE dept_part…

格雷编码(转换与计算)附代码

目录 格雷码对应表 格雷码转换公式 公式1 公式2 代码实现 格雷码对应表 十进制数 4位自然二进制码 4位典型格雷码 0 0000 0000 1 0001 0001 2 0010 0011 3 0011 0010 4 0100 0110 5 0101 0111 6 0110 0101 7 0111 0100 8 1000 1100 9 1001…

SpringSecurityoauth2.0自整理文档

被标记为资源的url不会走用户认证过滤器,所以通过createBefor>AuthFilter添加的过滤器无效 也就是在ResourceServerConfigurerAdapter实现类中配置的资源路径 记录一下手动加载用户和调用系统方法加载用户,以及他们的配置记录一下自动加载用户和自动密码校验的配置获取授权码…

十五、W5100S/W5500+RP2040之MicroPython开发<Modbus示例>

文章目录 1. 前言2. 相关网络信息2.1 简介2.2 指令构成2.3 优点2.4 应用 3. WIZnet以太网芯片4. Modbus TCP通信示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代,Micr…

C语言-第十六周做题总结

id:374 A.求最大值及其下标 题目描述 本题要求编写程序&#xff0c;找出给定的n个数中的最大值及其对应的最小下标&#xff08;下标从0开始&#xff09;。 输入 输入在第一行中给出一个正整数n&#xff08;1<n≤10&#xff09;。第二行输入n个整数&#xff0c;用空格分开…

C++ 获取位域成员的位宽

C 中可以使用位域来节省内存&#xff0c;实现不同长度的数据的存放&#xff0c;例如&#xff1a; struct BF {uint32_t a1 : 4;uint32_t a2 : 5;uint32_t a3 : 6; } bf;结构体变量 bf 大小为 2 Byte&#xff0c;其成员变量 a1, a2, a3 分别占 4&#xff0c; 5&#xff0c; 6 位…

ApsaraMQ Serverless 演进之路,助力企业降本

作者&#xff1a;家泽 ApsaraMQ 与时俱进&#xff0c;砥砺前行 阿里云消息队列从诞生开始&#xff0c;至今已有十余年。今年&#xff0c;阿里云消息产品全面品牌升级为 ApsaraMQ&#xff0c;与时俱进&#xff0c;砥砺前行。 2012 年&#xff0c;RocketMQ 诞生于集团内部&…

测试理论知识八:敏捷开发测试、极限编程测试

1. 敏捷开发模式下的测试 敏捷开发的核心理念&#xff1a; 个体和互动高于流程和工具。 工作的软件高于详尽的文档。 客户合作高于合同谈判。 响应变化高于遵循计划。 2. 敏捷开发的特征 敏捷开发提倡迭代式和增量式的开发模式&#xff0c;并强调测试在其中的重要作用。这…

【Linux系统基础】(4)在Linux上部署Tomcat、Nginx软件

Tomcat安装部署【简单】 简介 Tomcat 是由 Apache 开发的一个 Servlet 容器&#xff0c;实现了对 Servlet 和 JSP 的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说&#xff0c;Tomcat是一个W…

锐捷ssh配置

配置实例 ssh-Server ssh-Server(config)#enable service ssh-server // 启用ssh服务 ssh-Server(config)#username admin privilege 15 password Test123456 // 设置ssh登陆的账户密码 ssh-Server(config)#line vty 0 4 ssh-Server(config-line)#transport input ssh …

线性回归简介

线性回归简介 1、情景描述2、线性回归 1、情景描述 假设&#xff0c;我们现在有这么一张图&#xff1a; 其中&#xff0c;横坐标x表示房子的面积&#xff0c;纵坐标y表示房价。我们猜想x与y之间存在线性关系&#xff1a; y k x b ykxb ykxb 现在&#xff0c;思考一个问题&…

Java final、finally、finalize 有什么区别?

Java final、finally、finalize 有什么区别&#xff1f; final、finally 和 finalize 是 Java 中三个完全不同的概念&#xff0c;分别用于修饰变量、定义异常处理块和垃圾回收。 final&#xff1a; final 是一个关键字&#xff0c;用于修饰类、方法、变量等。被 final 修饰的…

安徽省人民政府关于印发《打造通用人工智能产业创新和应用高地若干政策》通知

安徽省人民政府关于印发《打造通用人工智能产业创新和应用高地若干政策》通知 原文地址 各市、县人民政府&#xff0c;省政府各部门、各直属机构&#xff1a; 现将《打造通用人工智能产业创新和应用高地若干政策》印发给你们&#xff0c;请认真贯彻落实。 安徽省人民政府 2…

纯HTML代码实现给图片增加水印并下载保存到本地

<!DOCTYPE html> <html> <head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1, maximum-scale1, user-scalableno"/><title>图片水印打码工具-宋佳乐博客</tit…

计算机图形学理论(3):着色器编程

本系列根据国外一个图形小哥的讲解为本&#xff0c;整合互联网的一些资料&#xff0c;结合自己的一些理解。 CPU vs GPU CPU支持&#xff1a; 快速缓存分支适应性高性能 GPU支持&#xff1a; 多个 ALU快速板载内存并行任务的高吞吐量&#xff08;在每个片段、顶点上执行着色…

nn.Embedding()个人记录

维度 import torch.nn as nnembedding nn.Embedding(num_embeddings 10, embedding_dim 256) nn.Embedding()随机产生一个权重矩阵weight&#xff0c;维度为&#xff08;num_embeddings, embedding_dim&#xff09; 输入维度&#xff08;batch_size, Seq_len&#xff09…

winlogbeat收集Windows事件日志传给ELK

服务器部署winlogbeat后&#xff0c;修改winlogbeat.yml: ###################### Winlogbeat Configuration Example ######################### This file is an example configuration file highlighting only the most common # options. The winlogbeat.reference.yml fi…

基于Java+SpringBoot+MyBatis-plus+Vue前后端分离小区管理系统设计与实现2.0

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…