摘要: > 以下内容出自 《MySQL 实战 45 讲》 # 24 | MySQL是怎么保证主备一致的? ## MySQL 主备的基本原理 如图所示就是基本的主备切换流程。(M-S结构) ![image](https://img2023.cnblogs.com/blog/1371486/202307/137 阅读全文
posted @ 2023-07-10 23:06 LionelYee 阅读(34) 评论(0) 推荐(0) 编辑
摘要: > 以下内容出自《MySQL 实战 45 讲》 # 23 | MySQL是怎么保证数据不丢的? ## binlog 的写入机制 1、事务执行过程中,先把日志写到 binlog cache,事务提交的时候,再把 binlog cache 写到 binlog 文件中。 2、一个事务的 binlog 是不 阅读全文
posted @ 2023-07-09 17:57 LionelYee 阅读(49) 评论(0) 推荐(0) 编辑
摘要: > 以下内容出自 《MySQL 实战 45 讲》 # 21 | 为什么我只改一行的语句,锁这么多? ## 加锁规则 **原则 1:加锁的基本单位是 next-key lock。next-key lock 是前开后闭区间。** **原则 2:查找过程中访问到的对象才会加锁。** **优化 1:索引上的 阅读全文
posted @ 2023-07-06 23:36 LionelYee 阅读(98) 评论(0) 推荐(0) 编辑
摘要: > 以下内容出自 《MySQL 实战 45 讲》 # 19 | 为什么我只查一行的语句,也执行这么慢? ## 第一类:查询长时间不返回 ```mysql mysql> select * from t where id=1; ``` 一般碰到这种情况。大概率是表 t 被锁住了。 分析: 首先执行 `s 阅读全文
posted @ 2023-07-06 21:35 LionelYee 阅读(29) 评论(0) 推荐(0) 编辑
摘要: # 18 | 为什么这些SQL语句逻辑相同,性能却差异巨大? ``` CREATE TABLE `tradelog` ( `id` int(11) NOT NULL, `tradeid` varchar(32) DEFAULT NULL, `operator` int(11) DEFAULT NUL 阅读全文
posted @ 2023-07-02 18:46 LionelYee 阅读(6) 评论(0) 推荐(0) 编辑
摘要: # 16 | “order by”是怎么工作的? ## 前置 MySQL 会给每个线程分配一块内存用于排序,称为 sort_buffer。 排序时可能在内存中完成,也可能需要使用外部排序,这取决于排序所需的内存和参数 sort_buffer_size 。 sort_buffer_size,就是 My 阅读全文
posted @ 2023-07-02 18:21 LionelYee 阅读(21) 评论(0) 推荐(0) 编辑
摘要: > 一下内容出自《MySQL 实战 45 讲》 ## 14 | count(*)这么慢,我该怎么办? ### count(*) 的实现方式 不同的 MySQL 引擎中,count(*) 有不同的实现方式。 - MyISAM 引擎把一个表的总行数存在了磁盘上,执行 count(\*) 的时候会直接返回 阅读全文
posted @ 2023-07-02 12:17 LionelYee 阅读(52) 评论(0) 推荐(0) 编辑
摘要: ## 13 | 为什么表数据删掉一半,表文件大小不变? ### 参数 innodb_file_per_table 表数据既可以存在共享表空间里,也可以是单独的文件。这个行为是由参数 innodb_file_per_table 控制的: - ON 表示的是,每个 InnoDB 表数据存储在一个以 .i 阅读全文
posted @ 2023-07-01 15:35 LionelYee 阅读(39) 评论(0) 推荐(0) 编辑
摘要: > 一下内容出自 《MySQL 实战 45 讲》 ## 12 | 为什么我的MySQL会“抖”一下? 一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。看上去,这就像是数据库“抖”了一下。 这个时候,MySQ 阅读全文
posted @ 2023-06-29 22:30 LionelYee 阅读(35) 评论(0) 推荐(0) 编辑
摘要: > 以下出自《MySQL 实战 45 讲》 ## 11 | 怎么给字符串字段加索引? 1、直接创建完整索引,这样可能比较占用空间; 2、创建前缀索引,节省空间,但会增加查询扫描次数,并且**不能使用覆盖索引**; 3、倒序存储,再创建前缀索引,用于绕过字符串本身前缀的区分度不够的问题; 4、创建 h 阅读全文
posted @ 2023-06-29 00:20 LionelYee 阅读(146) 评论(0) 推荐(0) 编辑