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

MySQL 核心考点全解:ACID、引擎对比、SQL 执行流程

目录

执行一条SQL请求的过程是什么?

mysql的三大引擎

A - 原子性(Atomicity)

C - 一致性(Consistency)

I - 隔离性(Isolation)

D - 持久性(Durability)

mysql为什么InnoDB是默认引擎?

mysql的InnoDB与MyISAM的区别


执行一条SQL请求的过程是什么?

由图可以清晰看到

连接器:用于与客户端建立连接,用户管理,校验身份

查询缓存:查询语句如果命中查询缓存则直接返回,否则继续往下执行。MySQL 8.0 已删除该模块;

解析器:把sql语句进行词法分析、语法分析然后构建语法树,方便后续模块读取sql语句的表名、字段名、字段、语句

执行sql:分为3步

预处理:检查表或字段是否存在;将 select * 中的 * 扩展为表上所有的列

优化:基于查询成本的考虑,选择查询成本最低的计划

执行:根据执行计划执行SQL查询语句,从存储引擎读取记录,返回给客户端

mysql的三大引擎

InnoDB:是MySQL的默认引擎,具有ACID事务支持、行级锁、外键约束等特性,有较好的数据完整性和并发控制能力,适用于高并发场景

A - 原子性(Atomicity)

核心:事务是一个不可分割的整体,要么全成功,要么全失败。

C - 一致性(Consistency)

核心:事务执行前后,数据库的数据状态必须是合法、一致的。

I - 隔离性(Isolation)

核心:多个事务同时执行时,它们之间互相隔离,互不干扰。

D - 持久性(Durability)

核心:事务一旦提交成功,数据就永久保存,不会因为数据库崩溃、断电等问题丢失。

MyISAM:是MySQL另一种场景的存储引擎,有较小的存储空间和内存消耗,并不支持ACID事务、外键约束、行级锁等特性,适用于需要读较多的场景,但在并发写入和数据完整性有一定限制

MeMory:把数据存储在内存中,适用于对读性能要求较高的场景,也不支持ACID等特性,并且在服务器重启或崩溃的时候会出现数据丢失

注意InnoDB和MyISAM 与 MeMory不同的是后者是把数据存储在内存,所以可以适用高性能场景

mysql为什么InnoDB是默认引擎?

因为InnoDB有ACID事务支持并且在崩溃恢复并发性能方面都有不错的能力

事务:InnoDB有ACID(原子性、一致性、隔离性、持久性)事务支持,MyISAM没有

崩溃恢复:InnoDB有redo log日志可以恢复因崩溃而丢失的数据,MyISAM没有

并发性能:InnoDB有行级锁,锁的粒度小,只需要锁住一行,而MyISAM是表锁,锁必须锁住整个表粒度大

并且如果用MyISAM的话,因其使用非聚簇索引的原因,如果发生了数据的修改,那么对应的数据地址也要修改,对性能消耗比较大,而InnoDB只需要对修改的数据排序就行

mysql的InnoDB与MyISAM的区别

事务:InnoDB有事务ACID,MyISAM没有

锁粒度:前者是行锁,粒度小,后者是表锁粒度大

索引结构:InnoDB是聚簇索引(主键索引),只在叶子节点保存了整行数据,其余节点只存储主键值和指针,这样的设计可以让B+Tree的存储数据量增加,只是InnoDB在使用聚簇索引时,辅助索引就只能查到对应的主键值,然后再在主键索引里查询对应的整行数据。MyISAM是非聚簇索引,可以通过辅助键索引和主键索引一起,直接查到数据

count的效率:前者select count(*) from 需要全表扫描才能获取到整个count,但后者用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可

http://www.jsqmd.com/news/785819/

相关文章:

  • 汽车零部件清洁度检测系统:西恩士满足ISO16232/VDA19双标准 - 工业设备研究社
  • 【审计专栏】【社会科学】【管理科学】第一百篇 人的需求来源01
  • React:useState 函数式更新、useContext 全解析、useReducer 深度解析
  • CANN/cann-learning-hub:vLLM-Ascend推理优化
  • 可解释AI在恶意软件分析中的应用:从黑盒到白盒的实战指南
  • AI能否提升企业生产率?英国微观数据实证研究揭示真相
  • CANN/catlass带步长批量矩阵乘法TLA示例
  • 如何高效使用AssetStudio:Unity资源提取与转换的完整指南
  • 智能手表与 App 蓝牙低功耗(BLE)实战指南
  • 共探 AI 转型新路径,数式科技黄梦瑶在 “走进云谷中心” 活动分享核心实战经验
  • Linux 线程通信 学习笔记
  • AI医疗实战:从单模态到多模态的糖尿病风险预测模型演进
  • Lidar360 9.1&Lidar360MLS9.1雷达点云数据处理软件
  • 工业摇摆筛筛分精度不达标怎么调试整改
  • ggplot2实战避坑指南:从能画到专业的四步进阶
  • EARN框架:跨团队协作构建算法公平性共识的实践指南
  • 智能电网安全:AI检测与GAN伪造攻击的攻防博弈
  • GPT-3.5在独裁者游戏中的公平性实验:AI决策机制与价值对齐探索
  • MCP协议赋能SolidServer:自然语言驱动网络IPAM与DNS管理
  • [具身智能-618]:激光雷达 规格与技术参数 完整含义详解
  • 基于Matrix与OpenAI API构建智能聊天机器人:从原理到部署实践
  • GHelper终极指南:华硕笔记本轻量级性能调控开源工具
  • openclaw用户配置taotoken作为openai兼容后端的快速教程
  • Taotoken模型广场如何帮助开发者快速选型与切换
  • 开发AI应用时如何利用Taotoken实现按Token计费与成本控制
  • 2026年AI大模型API中转网站排行榜揭晓!谁能成为企业长期运行的理想之选
  • 新能源电池清洁度检测系统选型:西恩士如何实现产品微米级清洁度管控 - 工业设备研究社
  • JAVA-实战8 Redis实战项目—雷神点评(附加)数据实体类
  • 认知科学如何启发AI:从感知机制到通用智能的五大支柱
  • AI-XR元宇宙隐私保护:从数据最小化到零知识证明的技术实践