06 2023 档案
摘要:> 一下内容出自 《MySQL 实战 45 讲》 ## 12 | 为什么我的MySQL会“抖”一下? 一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。看上去,这就像是数据库“抖”了一下。 这个时候,MySQ
阅读全文
摘要:> 以下出自《MySQL 实战 45 讲》 ## 11 | 怎么给字符串字段加索引? 1、直接创建完整索引,这样可能比较占用空间; 2、创建前缀索引,节省空间,但会增加查询扫描次数,并且**不能使用覆盖索引**; 3、倒序存储,再创建前缀索引,用于绕过字符串本身前缀的区分度不够的问题; 4、创建 h
阅读全文
摘要:> 以下内容出自《MySQL 实战 45 讲》 ## 10 | MySQL为什么有时候会选错索引? ### 优化器的逻辑 选择索引是优化器的工作。 影响优化器选择的判断标准: - 扫描行数 - 临时表 - 是否排序 #### 扫描行数 MySQL 在真正执行语句之前,会根据统计信息来估算记录数。这个
阅读全文
摘要:> 以下内容出自《MySQL 实战 45 讲》 ## 09 | 普通索引和唯一索引,应该怎么选择? ### 查询过程 性能差距:微乎其微。 InnoDB 的数据是按数据页(默认为 16KB)为单位来读写的。对于普通索引,因为符合条件的行附近的行也在这个页中,所以查找附近的行只需要在内存中操作,会很快
阅读全文
摘要:## 08 | 事务到底是隔离的还是不隔离的? ### 事务启动时机 事务启动时机: begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。如果想要马上启动,可以使用 start transaction wit
阅读全文
摘要:目录PHP基础 2PHP代码标记 2PHP注释 2PHP语句分隔符 2PHP变量 3常量 3数据类型 4流程控制 6文件 7函数 9闭包 11常用系统函数 12错误处理 13错误显示设置 15字符串类型 17字符串相关函数 19数组 21遍历数组 22数组的相关函数 25PHP基础PHP是一种运行在
阅读全文
摘要:## 06、07 | 全局锁、表锁和行锁 MySQL 中的锁大致分为全局锁、表锁和行锁。 ### 全局锁 全局锁就是对整个数据库实例加锁。 加全局锁命令:`Flush tables with read lock`(FTWRL),执行该命令会让整个库处于只读状态。 ```sql Flush table
阅读全文
摘要:## 04 | 05 深入浅出索引 在 MySQL 中,索引是在存储引擎层实现的,所以并没有统一的索引标准,即不同存储引擎的索引的工作方式并不一样。而即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。 ### 索引常见模型 | 模型 | 特点 | 场景 | 使用 | | | | | |
阅读全文
摘要:## 03 | 事务隔离:为什么你改了我还看不见? ### 隔离性与隔离级别 当数据库上有多个事务同时执行的时候,就可能出现**脏读(dirty read)**、不可重复读(non-repeatable read)、**幻读(phantom read)**的问题,为了解决这些问题,就有了“隔离级别”
阅读全文
摘要:> 以下内容出自《MySQL 实战 45 讲》 ## 02 | 日志系统:一条SQL更新语句是如何执行的? 查询语句的那套流程,更新语句也会走一遍。 更新流程中和查询不一样的是,更新流程中涉及了两个重要的日志模块。`redo log` (重做日志) 和 `binglog`(归档日志)。 ### re
阅读全文
摘要:## 基础篇 ### 第一课、一条 SQL 查询语句是如何执行的? 下面是 MySQL 的基本架构示意图,从中可以清楚地看到 SQL 语句在 MySQL 的各个功能模块中的执行过程。 ![MySQL 的基本架构示意图](https://cdn.jsdelivr.net/gh/YangZhiqiang
阅读全文