存储引擎中 InnoDB 和 MyISAM 的区别?

news/2025/3/10 0:23:19/文章来源:https://www.cnblogs.com/Abner-rudolf/p/18761708

InnoDB 和 MyISAM 的区别?

InnoDB 和 MyISAM 是MySQL数据库中两种常用的存储引擎,它们各自具有不同的特点和适用场景。以下是它们之间的一些主要区别:

  1. InnoDB

    1. 天生支持事务:提供了完整的提交、回滚和崩溃恢复能力;

    2. 支持物理外键:有助于保持数据的参照完整性;

    3. 天生支持行锁:允许更高的并发性,因为只有修改的特定行被锁定,其他行仍可以进行读写操作;

    4. 手动支持表锁

    5. 使用聚簇(集)索引:索引跟数据在同一个文件;

    6. 从 MySQL 5.6 版本开始支持全文索引。

  2. MyISAM

    1. 不支持事务:如果操作过程中出现错误,可能需要手动恢复数据;

    2. 不支持外键

    3. 只支持表锁:当对一张表进行操作时,这张表会被锁定,直到释放后才能被再次访问,不适合使用在高并发的环境下;

    4. 不支持行锁

    5. 使用非聚簇索引:索引跟数据不在一个文件;

    6. 长期以来一直支持全文索引,适合于需要快速搜索大量文本的应用。


综上所述,选择哪种存储引擎应根据应用的具体需求来决定。

  • 如果你的应用需要事务支持和高并发处理,那么 InnoDB 是更好的选择;
  • 而如果你的应用主要是读密集型,并且不需要事务支持,那么 MyISAM 可能会更合适。

不过,默认情况下,自 MySQL 5.5 起,InnoDB 成为了默认的存储引擎


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

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

相关文章

再次认识java反射

一、概述 在认识java反射之前我们先来认识一下什么是动态语言与静态语言。 动态语言 是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以 被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。 主要…

【问题】HashMap的computeIfAbsent方法丢失数据问题分析

问题背景 前段时间碰到客户问题发现是 ConcurrentHashMap的computeIfAbsent导致死循环(ConcurrentHashMap死循环问题分析)就很好奇HashMap的computeIfAbsent会不会也有问题,一试之下发现确实存在问题,相同的代码在HashMap中会丢失插入的数据。 发生原因 【循环添加】时,如…

CFA学习

定量分析 利率 利率的定义:被认为是 ① 平衡借贷双方的平衡点(equilibrium interest rates)② 贴现率(货币的时间价值)③ 机会成本 利率的组成:通货膨胀➕各种风险 计算【现值/终值】用时间轴确实一目了然! # 经济学 # 财务报表分析 # 公司理财 # 投资组合管理 # 权益投…

INFINI Labs 产品更新 | Easysearch 增加异步搜索等新特性

INFINI Labs 产品更新发布!此次更新,Easysearch 增加了新的功能和数据类型,包括 wildcard 数据类型、Point in time 搜索 API、异步搜索 API、数值和日期字段的 doc-values 搜索支持,Console 新增了日志查询功能。 INFINI Easysearch v1.11.0 INFINI Easysearch 是一个分布…

语法trick

for (int i = 1; i <= n; ++i) {cout << dist[i] << " \n"[i == n];}

百万架构师第四十七课:并发编程的原理(二)|JavaGuide

原文链接 JavaGuide《并发编程的艺术》 并发编程的实现原理 目标上节课内容回顾 synchronized 原理分析 wait 和 notify Lock 同步锁回顾原子性 可见性 有序性JMM ​ JMM 是 JAVA 里边定义的内存模型。定义了多线程和我们内存交互的规范。屏蔽了硬件和操作系统访问内存的差异。…

[极客大挑战 2019]Havefun 1

进网站显示一只猫,于是看源代码 发现下面有注释<!--$cat=$_GET[cat];echo $cat;if($cat==dog){echo Syc{cat_cat_cat_cat};}-->所以在后面加上/index.php?cat=dog即可(小猫可爱捏)

提取excel中的图片

需求: 提取excel中嵌入单元格的图片 实现思路: 用pandas读取文件,对于嵌入图片的单元格则会显示其函数 问题:wps与office嵌入方法有所不同,wps使用函数嵌套,而office则是设置随单元格大小变动,对于后者,会被视为是悬浮的图片,使用pandas无法提取任何一张图片 源文件如…

2019年-PTA模拟赛-L2-1 链表去重(一维数组模拟链表)

一维数组模拟链表一维数组模拟链表 被删除的结点仍然在e数组中,因此记录一下被删除的结点的地址就可以找到其值AcCode: #include<bits/stdc++.h> using namespace std; int e[100010], ne[100010], vis[100010]; vector<int> delNode; int main(){int N, rootAdre…

C语言实验一作业

实验任务1:#include <stdio.h> int main() {printf(" O \n");printf("<H>\n");printf("I I\n");printf(" O \n");printf("<H>\n");printf("I I\n");return 0; }#include <stdio.h> in…

二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)

二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)@目录二、搭建MyBatis采用xml方式,验证CRUD(增删改查操作)2.1 开发环境2.2 创建maven工程2.3 创建User实体2.4 创建MyBatis的核心配置文件2.5 创建mapper接口2.6 创建MyBatis的映射文件2.7配置日志打印2.8 通过junit测…