一江溪水
MySQL如何避免幻读 MySQL如何避免幻读
事务的并发问题 脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据 不可重复读:事务A多次读取同一数据,事务B在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果不一致。 幻读:A事
2021-11-14
MySQL的执行计划(三) MySQL的执行计划(三)
书接上回 MySQL的执行计划(二) 执行计划中的列possible_keys显示在查询中使用了哪些索引 key 实际使用的索引,如果为NULL,则没有使用索引; 查询中如果使用了覆盖索引,则该索引仅出现在key列中。 possible_k
2021-10-07
MySQL的执行计划(二) MySQL的执行计划(二)
书接上回:MySQL执行计划(一) 执行计划中的列typetype列指代访问类型,是MySQL决定如何查找表中的行。 是SQL查询优化中一个很重要的指标,拥有很多值,依次从最差到最优: ALL全表扫描,性能最差,在写SQL时尽量避免此种情况
2021-10-06
MySQL的执行计划(一) MySQL的执行计划(一)
什么是执行计划执行计划,就是一条SQL语句,在数据库中实际执行的时候,一步步的分别都做了什么事情 EXPLAIN命令是查看查询优化器是如何决定执行查询的主要方法,从它的查询结果中我们可以知道: 一个SQL语句每一步是如何执行的; 都做了哪
2021-10-05
MySQL的日志文件 MySQL的日志文件
二进制日志-binlog二进制日志-binlog,它是 MySQL 重要的日志模块,在 Server 层实现 binlog 以二进制形式,将所有修改数据的 query 记录到日志文件中,包括: query 语句 执行时间 相关事务信息
2021-10-04
MySQL如何保证ACID MySQL如何保证ACID
ACID 原子性:事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行 一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。 隔离性:同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。 持久性:事务
2021-10-01
MySQL索引(二) MySQL索引(二)
MySQL索引(二)自适应哈希索引 自适应哈希索引是InnoDB引擎的一个特殊功能,当它注意到某些索引值被使用的非常频繁时,会在内存中基于B-Tree索引之上再创键一个哈希索引,这样就让B-Tree索引也具有哈希索引的一些优点,比如快速哈希
2021-09-05
MySQL索引(一) MySQL索引(一)
MySQL索引索引是什么索引是数据库中用来提高性能的常用工具,索引在 MySQL 中也叫“键(Key)”,是存储引擎用于快速查找记录的一种数据结构,这也是索引的基本功能。 索引对于良好的性能很关键,尤其是当表中数据量越来越大时,索引对性能
2021-09-04
MySQL的存储引擎 MySQL的存储引擎
MySQL存储引擎MySQL 提供不同的技术存储数据,这些技术使用不同的数据存储机制、索引建立方式、锁方式来完成数据的构建,这些技术统称为存储引擎。 MySQL 至少支持 9 种存储引擎,目前最受关注的是 InnoDB 和 MyISAM 存
2021-08-24
一条SQL更新语句是如何执行的 一条SQL更新语句是如何执行的
MySQL日志文件二进制日志-binlog 二进制日志,其实就是我们平常所说的 binlog,它是 MySQL 重要的日志模块,在 Server 层实现。 binlog 以二进制形式,将所有修改数据的 query 记录到日志文件中,包括
2021-08-23
一条SQL查询语句是如何执行的 一条SQL查询语句是如何执行的
MySQL数据库的架构MySQL 包含 Server 层和存储引擎层两大部分。 存储引擎层负责数据的存储和提取,MySQL 采用插件式的存储引擎,常见的存储引擎有 InnoDB MyISAM CSV 其中 InnoDB 是最常用的存储
2021-08-22
MySQL事务和隔离级别 MySQL事务和隔离级别
MySQL事务和隔离级别什么是事务事务是一组原子性的SQL查询,事务内的SQL语句,要么全部执行成功,要么全部执行失败 最经典的例子就是转账了,假如小明要给小红转账100元,这个转账会涉及到两个关键操作就是:将小明的余额减少100元,将小红
2021-08-21