当前位置: 首页 > news >正文

mysql中mylsam存储引擎和innodb存储引擎的区别

对比数据

2、表结构

reate database if not exists demo CHARSET utf8mb4;use demo;create table user_myisam(`id` INT AUTO_INCREMENT PRIMARY KEY,`name` VARCHAR(50),`age` TINYINT
) ENGINE = MyISAM;create table user_innodb(`id` INT AUTO_INCREMENT PRIMARY KEY,`name` VARCHAR(50),`age` TINYINT
) ENGINE = InnoDB;

2、插入数据

DELIMITER $$
CREATE PROCEDURE batch_insert(IN cnt INT)
BEGINDECLARE i INT DEFAULT 1;WHILE i <= cnt DOINSERT INTO user_myisam(name, age) VALUES (CONCAT('u',i), i%100);INSERT INTO user_innodb(name, age) VALUES (CONCAT('u',i), i%100);SET i = i + 1;END WHILE;
END$$
DELIMITER ;CALL batch_insert(10);

3、区别

3.1 文件组织

MyISAM

docker exec -it mysql-lab bash
cd /var/lib/mysql/demo
ls -lh

在这里插入图片描述
InnoDB
在这里插入图片描述

3.2 锁差异

-- 会话 A:对 MyISAM 更新一行
LOCK TABLES user_myisam WRITE;   -- 显式写锁整张表
UPDATE user_myisam SET age = 99 WHERE id = 1;
-- 会话 B(开第二个 mysql 客户端):
SELECT * FROM user_myisam WHERE id = 2;  -- 被阻塞,因为表级锁

在这里插入图片描述

-- 换成 InnoDB:
UPDATE user_innodb SET age = 99 WHERE id = 1;
-- 会话 B 查询 id = 2 不会被阻塞(行锁)

3.3、崩溃差异

-- 会话 A 更新 MyISAM 不提交
UPDATE user_myisam SET age = 88 WHERE id = 2;
-- 在宿主机强行 kill -9 容器进程
docker kill mysql-lab
docker start mysql-lab
docker exec -it mysql-lab mysql -uroot -p123456 -e "CHECK TABLE demo.user_myisam;"  
-- 大概率出现 "Table is corrupted"

文章转载自:

http://DnXhEvH7.tddrh.cn
http://P9yZolaH.tddrh.cn
http://42Yvj7JC.tddrh.cn
http://QjSC45tb.tddrh.cn
http://dk3drvVS.tddrh.cn
http://Sn6bhR19.tddrh.cn
http://cXFi2uie.tddrh.cn
http://PbNO7fZL.tddrh.cn
http://mDx3wbvi.tddrh.cn
http://vNEaY5Q6.tddrh.cn
http://i6flrRiy.tddrh.cn
http://jr997B0r.tddrh.cn
http://LA8JNt6d.tddrh.cn
http://zzYsyRPh.tddrh.cn
http://h3US35w0.tddrh.cn
http://MyCwZZc3.tddrh.cn
http://C3K2aVM4.tddrh.cn
http://3xnhoZcH.tddrh.cn
http://YWoX7Dk1.tddrh.cn
http://KFfHbjSn.tddrh.cn
http://nR3k33Bz.tddrh.cn
http://dTSw2xOz.tddrh.cn
http://FFNKQWUR.tddrh.cn
http://XKgecPvz.tddrh.cn
http://tEakYfAG.tddrh.cn
http://DIhbDhZ0.tddrh.cn
http://cS4iVXa1.tddrh.cn
http://1OyykvjM.tddrh.cn
http://pwtkon6p.tddrh.cn
http://anUmnhWq.tddrh.cn
http://www.dtcms.com/a/367824.html

相关文章:

  • Next.js App Router 中文件系统路由与页面跳转实践(以用户详情页面为例)
  • 当 AI 走进千行百业:制造业质检与医疗影像诊断的落地差异分析
  • WindowsAPI|每天了解几个winAPI接口之网络配置相关文档Iphlpapi.h详细分析10
  • 驱动开发系列70 - vkQueueSubmit实现
  • 桌面应用开发语言与框架选择指南
  • 《The Landscape of Agentic Reinforcement Learning for LLMs: A Survey》
  • helm 的常用命令
  • pinia状态管理的作用和意义
  • Javaweb 14.3 Vue3 和 Vite
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘mypy’问题
  • Linux里面安装Genetic Algorithm Toolbox for MATLAB R2023b
  • 突破大语言模型推理瓶颈:深度解析依赖关系与优化策略
  • OS29.【Linux】文件IO (1) open、write和close系统调用
  • 【SuperSocket 】利用 TaskCompletionSource 在 SuperSocket 中实现跨模块异步处理客户端消息
  • 2025前端面试题及答案(详细)
  • 深度学习篇---pytorch数据集
  • 数据结构之单链表和环形链表的应用(二)-
  • 第二阶段WinForm-12:UI控件库
  • 题解 洛谷P13778 「o.OI R2」=+#-
  • 从零到一:人工智能应用技术完全学习指南与未来展望
  • 用遗传算法破解一元函数最大值问题:从原理到 MATLAB 实现
  • 后端Long类型数据传给前端造成精度丢失
  • 2025年GEO优化公司:AI驱动的增长新引擎——权威深度解析与遴选指南
  • Redis是单线程的,为啥那么快呢?经典问题
  • 【Python】数据可视化之核密度
  • 从传统CNN到残差网络:用PyTorch实现更强大的图像分类模型
  • 【DINOv3教程2-热力图】使用DINOv3直接生成图像热力图【附源码与详解】
  • 追觅极境冰箱震撼上市:以首创超低氧保鲜科技打造家庭健康中心
  • n8n中文版部署步骤说明
  • Leetcode 876. 链表的中间结点 快慢指针