MySQL 核心考点全解:ACID、引擎对比、SQL 执行流程
目录执行一条SQL请求的过程是什么mysql的三大引擎A - 原子性AtomicityC - 一致性ConsistencyI - 隔离性IsolationD - 持久性Durabilitymysql为什么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是聚簇索引(主键索引)只在叶子节点保存了整行数据其余节点只存储主键值和指针这样的设计可以让BTree的存储数据量增加只是InnoDB在使用聚簇索引时辅助索引就只能查到对应的主键值然后再在主键索引里查询对应的整行数据。MyISAM是非聚簇索引可以通过辅助键索引和主键索引一起直接查到数据count的效率前者select count(*) from 需要全表扫描才能获取到整个count但后者用一个变量保存了整个表的行数执行上述语句时只需要读出该变量即可
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2598904.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!