MySQL存储引擎:MyISAM和InnoDB区别详解

2023-10-29

1、MyISAM和InnoDB区别

1.1 区别

  InnoDB MyISAM
构造

由.frm文件、表空间(分为独立表空间或者共享表空间)和日志文件(redo log)组成。

MyISAM在磁盘上存储成三个文件,其中.frm文件存储表定义;.MYD(MYData)为数据文件;.MYI (MYIndex)为索引文件。
事务 支持 不支持
行锁,表锁 表锁
外键 支持 不支持
select count(*) InnoDB必须扫描全表。 内置了一个计数器,count(*)时它直接从计数器中读。
索引 只把索引都load到内存中。 把数据和索引都load到内存中。
全文索引 不支持 支持。

1.2 名词解释

表级锁:

直接锁定整张表,在锁定期间,其他进程无法对该表进行写操作,如果设置的是写锁,那么其他进程读也不允许,因此myisam支持的并发量低,但myisam不会出现死锁;

行级锁:

只对指定的行进行锁定,其他进程还是可以对表中的其他行进行操作的。因此行锁能大大的减少数据库操作的冲突,但有时会导致死锁。

全文索引

指对char、varchar和text中的每个词(停用词除外)建立倒排序索引。MyISAM的全文索引其实没啥用,因为它不支持中文分词,必须由使用者分词后加入空格再写到数据表里,而且少于4个汉字的词会和停用词一样被忽略掉。

2、不同版本对应默认引擎

在MySQL 5.1之前的版本中,默认的搜索引擎是MyISAM,从MySQL 5.5之后的版本中,默认的搜索引擎变更为InnoDB。

3、如何选择

因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。那么MyISAM最好的选择。且MyISAM恢复速度快。可直接用备份覆盖恢复。
如果系统读少,写多的时候,尤其是并发写入高的时候。InnoDB就是首选了。
 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL存储引擎:MyISAM和InnoDB区别详解 的相关文章

  • MySQL,连接两列

    MySQL 表中有两列 SUBJECT and YEAR 我想生成一个字母数字唯一编号 其中包含主题和年份的串联数据 我怎样才能做到这一点 是否可以使用像这样的简单运算符 您可以使用CONCAT http dev mysql com doc
  • 如何在php/mysql中使用事务

    我正在使用 php mysql 我知道 mysql 中的事务 但不能在我的脚本中使用 下面是我的脚本 如何在我的代码中使用 php 事务 即 BEGIN ROLLBACK COMMIT foreach json a shop as json
  • MySQL 组合两个查询

    我有两个 MySQL 查询 QUERY SELECT sodnik 1 FROM prihodnji krog WHERE file id 8778 AND sodnik 1 UNION SELECT sodnik 2 FROM priho
  • 蟒蛇 | MySQL | AttributeError:模块“mysql.connector”没有属性“connect”

    我正在学习 python 中的一个新库 mysql 我尝试执行以下命令 import mysql connector mydb mysql connector connect host localhost user root passwd
  • 如何删除MySQL中的所有事件

    如果我想删除某个事件 我需要查询类似的内容 DROP EVENT IF EXISTS eventname 但我找不到一次性删除所有事件的命令 必须一项一项地删除 有没有一次性删除所有事件的SQL DROP EVENT IF EXISTS S
  • 将非常大的Python列表输出保存到mysql表中

    我想将 python 生成的列表的输出保存在 mysql 数据库的表中 该表如下所示 mysql 中的 myapc8 表 https i stack imgur com 4B4Hz png这是Python代码 在此输入图像描述 https
  • 如何修复“未知变量'sql-mode = ANSI'”?

    使用 MySQL 5 5 27 在 my cnf 中我有 mysql sql mode ANSI 启动 mysql 控制台后我得到 unknown variable sql mode TRADITIONAL MySQL 文档服务器 SQL
  • Apache 子进程已退出,状态为 255

    经过大量的搜索 尝试 修复 等待和哭泣 在我放弃之前 我想为这个错误抓住最后的机会 我们正在奔跑Microsoft Windows Server 2012 Apache 2 4 6 Win64 OpenSSL 1 0 1e PHP 5 5
  • 具有“日期之间”的 CakePHP 模型

    我有一个很大的数据集 超过十亿行 数据在数据库中按日期分区 因此 我的查询工具必须在每个查询上指定一个 SQL Between 子句 否则它将必须扫描每个分区 而且 它会在返回之前超时 所以 我的问题是 分区的数据库中的字段是日期 使用 C
  • 无法加载身份验证插件“caching_sha2_password”

    我正在将 MySQL 8 0 与 MySQL Workbench 连接并收到以下错误 无法加载身份验证插件 caching sha2 password dlopen usr local mysql lib plugin caching sh
  • 如何对字段数据进行分组?

    我有 sql 查询来显示数据 SELECT artikel foto naam fotografer id fotografer name fotografer customer first name customer last name
  • 错误 1305 (42000):保存点...不存在

    我的 MYSQL 数据库中有这个 SQL 存储过程为空 所以我猜没有隐式提交 DROP PROCEDURE IF EXISTS doOrder DELIMITER CREATE PROCEDURE doOrder IN orderUUID
  • mysql 查询选择当月的所有行?

    我有一个名为 startdate 的日期时间类型的列 我必须获取当前月份的开始日期和结束日期之间的所有行 即从 1 11 2014 到 30 11 2014 select from your table where year curdate
  • 如何统计订单总价?

    我有这些表 Orders id status user id address id 1 await 1 1 products id name price quantity 1 test1 100 5 2 test2 50 5 order p
  • 如何编写一个 SQL 查询来计算每月和每年的行数?

    有谁知道如何查询 vbulletin 数据库来生成每月 每年注册数量的报告 以获得如下结果 MM YYYY Count 01 2001 10 02 2001 12 感谢下面的这些答案 我的最终版本有效如下 SELECT COUNT as R
  • 如何处理多个连接

    我有一个复杂的查询 需要总共 4 个表中的字段 内部联接导致查询花费的时间比应有的时间长得多 我已经运行了一个 EXPLAIN 语句 其可视化结果附在下面 这是我的查询 SELECT pending corrections correcte
  • 哪些mysql设置影响LOAD DATA INFILE的速度?

    让我来介绍一下情况 我们尝试将适量的行数 大约每天 10 20M 插入到宽度适中的 MyISAM 表中 Field Type Null Key Default Extra blah1 varchar 255 NO PRI blah2 var
  • Mac 上的 Emacs 和 MySQL

    我尝试使用 sql mysql 模式 但 emacs 无法找到文件 目录 mysql 但是 我可以从终端访问它 如何将 emacs 中的 mysql 指向 usr local mysql bin mysql setq sql mysql p
  • 对不同的数据库和表进行一次性查询

    我有一个 Rails 应用程序 侧面有一个 WordPress 博客 完全单独位于 blog 客户想要 Rails 应用程序主页上的最新博客文章 因此我需要对 word press 数据库进行一次性 mysql 查询 我将如何在 Rails
  • 使用 PHP MySql 进行关键字搜索?

    我的 mysql 表中有标题 varchar 描述 text 关键字 varchar 字段 我保留了关键字字段 因为我认为我只会在这个字段中搜索 但我现在需要在所有三个字段中进行搜索 所以对于关键字 word1 word2 word3 我的

随机推荐

  • docker-compose安装jenkins

    一 下载安装docker compose 拉取docker compose curl L https get daocloud io docker compose releases download 1 22 0 docker compos
  • 使用javassist生成新类

    javassist javassist是一个开源的分析 编辑和创建Java字节码的类库 不需要了解虚拟机指令 就能动态生成类或者改变类的结构 ClassPool ClassPool是缓存CtClass对象的容器 所有的CtClass对象都在
  • C++标准库头文件(工具库->csignal)

    参考网址 https zh cppreference com w cpp header https www runoob com cplusplus cpp standard library html 工具库 csignal 信号管理的函数
  • 自定义速腾激光雷达点云XYZIRT格式并调用PCL库进行滤波

    目录 一 试验程序源代码 1 1需要包含的头文件 1 2定义点云结构 1 3主函数 1 4 CMake文件 二 学习pcl PCLPointCloud2 Ptr 2 1区别 2 2转换 2 3心得 Windows 10 Ubuntu 20
  • 模拟电路试题

    模拟电路 1 基尔霍夫定理的内容是什么 仕兰微电子 a 基尔霍夫电流定律 在电路的任一节点 流入 流出该节点电流的代数和为零b 基尔霍夫电压定律 在电路中的任一闭合电路 电压的代数和为零 2 平板电容公式 C S 4 kd 3 三极管曲线特
  • Android 九宫格布局(图片上传、预览)

    前言 利用RecyclerView展示朋友圈UI布局 包含展示 预览 删除等功能 效果图 1 在项目app build gradle添加依赖 图片加载 implementation com github bumptech glide gli
  • cesium与three.js 结合的栗子,结合了一下网友们的栗子,解决了three.js 高版本模型出不来的问题

    废话不多说先上图 下面是源代码
  • 清理水草 蓝桥杯模拟

    问题描述 小蓝有一个 n m 大小的矩形水域 小蓝将这个水域划分为 n 行 m 列 行数从 1 到 n 标号 列数从 1 到 m 标号 每行和每列的宽度都是单位 1 现在 这个水域长满了水草 小蓝要清理水草 每次 小蓝可以清理一块矩形的区域
  • VS编译错误:mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file

    一 问题描述 今天在用DDK编译一个驱动时出现以下错误 1 gt 已启动生成 项目 DriverDev 配置 Driver Check Edtion Win32 1 gt 正在链接 1 gt 正在嵌入清单 1 gt mt exe gener
  • 第二节课笔记(基本知识)

    基本知识 变量 的命名和使用 变量名只能包含字母 数字和下划线 变量名可以字母或下划线打头 但不能以数字头 例如 可将变量命名为message 1 但不能将其命名为1 messageo 变量名不能包含空格 但可使用下划线来分隔其中的单词 例
  • 车辆总线-MVB通讯

    概述 MVB Multifunction vehicle bus 为多功能车辆总线 它是列车通信网 TCN Train Communication Network 的一部分 TCN 网络由 WTB Wire Train Bus MVB 构成
  • Q-learning 理解以及简单实现

    强化学习 reinforcement learning 的过程 强化学习中有状态 state 动作 action 奖赏 reward 这三个要素 智能体需要根据当前状态来采取动作 获得相应的奖赏之后 再去改进这些动作 使得下次再到相同状态时
  • MoviePy介绍

    MoivePy是一个用于视频编辑的Python库 可以 剪切 拼接 标题插入 视频合成 视频处理和创建自定义效果 它支持Windows Linux Mac 源码地址 https github com Zulko moviepy 最新发布版本
  • 前端如何调用后端接口进行数据交互(极简)

    前端调用后端接口 获得数据并渲染 一 介绍 一个完善的系统 前后端交互是必不可少的 这个过程可以分成下面几步 前端向后端发起请求 后端接口接收前端的参数后 开始层层调用方法处理数据 后端将最终数据返回给前端接口 前端请求成功后 将数据渲染至
  • ubuntu安装tomcat7

    1 上传tomcat7源码包 百度云盘链接 https pan baidu com s 1Yo4DVOcm667F iKhGwpPBw 密码 ce1h 2 先安装 JDK cd opt tar zxvf jdk 8u161 linux x6
  • 解决GitHub密码授权访问即将失效的问题

    解决GitHub密码授权访问即将失效的问题 前言 1 网络中的解决方法 2 GitHub密码授权弃用通知 3 创建个人访问令牌 4 IDEA设置Token访问GitHub 4 1 忘记密码 4 2 Token授权 5 GitHub 客户端
  • 非Unicode程序创建非本地字符集的文件路径

    开发中需要用到纯MFC的程序完成整包的文件释放 过程大概是根据整包中的文件路径记录在当前执行路径下建立子目录 创建文件 然后将整包中的内存数据写入该文件 正常英文或中文系统下路径创建及文件读写都没有遇到问题 但在路径名称或文件名称出现非本地
  • 前端常见的适配方法

    作为一个真正的前端攻城狮 我们经常会谈到web前端怎么做适配 然而平常经常做的事 一旦问起来突然好像脑子一片空白 只能想到rem flex 媒体查询那些 因此想记录一篇文章以此警醒自己 一 固定布局 pc端 静态布局 以像素作为页面的基本单
  • 谁在为网络安全制造标尺?

    我们想帮助企业往后退一步 去全局的看一下自己的安全能力建设水平如何 以及在当下的阶段最应该做的安全建设是什么 度量 对应的是更清晰的认知 而对企业安全而言 这种认知 也更在成为一把新的标尺 作者 皮爷 出品 产业家 6月开始 吕一平开始频繁
  • MySQL存储引擎:MyISAM和InnoDB区别详解

    1 MyISAM和InnoDB区别 1 1 区别 InnoDB MyISAM 构造 由 frm文件 表空间 分为独立表空间或者共享表空间 和日志文件 redo log 组成 MyISAM在磁盘上存储成三个文件 其中 frm文件存储表定义 M