摘要: 24 | MySQL是怎么保证主备一致的? 主从同步流程: 在备库上执行change master命令,设置主库的IP、端口、用户、密码,以及要从哪个位置开始请求binlog,这个位置包含文件名和日志偏移量。 在备库上执行start slave命令,这个时候会启动两个线程,一个是IO_Thread、 阅读全文
posted @ 2021-04-02 06:48 zliawk 阅读(120) 评论(0) 推荐(0)
摘要: 23 | MySQL是怎么保证数据不丢失的? 事务执行过程中,先把日志写到binlog cache,事务提交的时候,再把binlog cache写到binlog文件中。每一个线程都会分配一个binlog cache,由参数binlog_cache_size控制单个线程内binlog cache的大小 阅读全文
posted @ 2021-03-30 20:00 zliawk 阅读(102) 评论(0) 推荐(0)
摘要: 20 | 幻读是什么,幻读有什么问题? 第20、21篇章主要讲述MySQL加锁的规则,这些规则并不是很明显,也没有在官方文档上直接说明,丁奇老师完全是看着代码总结出来了,有点难为了,个人觉得不一定是有效的,特别是在不同的MySQL版本下加索策略可能会有所不同,最好能去实地看这两篇文章,感受下实战。 阅读全文
posted @ 2021-03-29 22:16 zliawk 阅读(193) 评论(0) 推荐(0)
摘要: 18 | 为什么这些SQL语句逻辑相同,性能却差异巨大? 对索引字段做函数操作,可能会破坏索引的有序性,导致优化器不会走树搜索,最终会走全索引扫描。 对索引字段做值操作,比如 select * from t where id + 1 = 10000,MySQL仍然不会走树搜索。 字符串和数字做比较的 阅读全文
posted @ 2021-03-29 22:14 zliawk 阅读(93) 评论(0) 推荐(0)
摘要: 16 | order by 是怎么工作的? Extra字段中显示Using filesort表示需要排序。MySQL会给每个线程分配一块内存用于排序,称为sort_buffer,将满足条件的记录放入到该缓冲区中,然后根据指定字段排序。排序这个动作,可能在内存中完成,也可能需要使用外部排序,这取决于排 阅读全文
posted @ 2021-03-27 22:18 zliawk 阅读(75) 评论(0) 推荐(0)
摘要: 05 | 深入浅出索引(下) 覆盖索引:如果查找的列本身就在二级索引上,那么就不要回表了,这样子的索引叫做覆盖索引,通常用来减少回表的次数以提高性能。 联合索引:使用多个字段组合的索引,假设有联合索引(a,b),那么在索引树中它会先根据a的大小进行排序,如果有相同值的a在按照b的大小进行排序。 最左 阅读全文
posted @ 2021-03-24 20:38 zliawk 阅读(77) 评论(0) 推荐(0)
摘要: 14 | count(*) 这么慢,我该怎么办? InnoDB下count的实现方式是一行一行地读取数据然后累积计数,这也是为什么记录越来越多会导致查询越来越慢。之所以这么设计是因为一行数据可能存在多个版本,InnoDB也无法确定,只能一行一行地获取并判断。 InnoDB 是索引组织表,主键索引树的 阅读全文
posted @ 2021-03-24 19:59 zliawk 阅读(94) 评论(0) 推荐(0)
摘要: 06 | 全局锁和表锁:给表加个字段怎么有这么多阻碍 全局锁:对整个数据库实例加读锁,命令是Flush tables with read lock,使用这个命令后其他线程的增删改、修改表结构、建表将会被阻塞(使用unlock tables可以解除)。主要用来做全局备份。 为什么使用全局锁而不要使用全 阅读全文
posted @ 2021-03-23 19:52 zliawk 阅读(118) 评论(0) 推荐(0)
摘要: 07 | 行锁功过:怎么减少行锁对性能的影响 二阶段锁协议:在执行某条SQL时加锁,在事务提交后统一释放锁。 设置锁等待的超时时间:innodb_lock_wait_timeout,默认情况下是50秒。 发起死锁检测,innodb_deadlock_detect设置为on,默认情况下是on,缺点就是 阅读全文
posted @ 2021-03-23 19:51 zliawk 阅读(130) 评论(0) 推荐(0)
摘要: 12 | 为什么我的MySQL会抖一下? 这一篇将的云里雾里的感觉,比如数据页和redo log的脏页到底是一起刷还是分开刷的,还有它们之间的LSN是如何比较的,这部分应该属于很复杂的内容,丁奇老师说后续的篇章会阐述这块的内容,等着吧。 内存中的数据页什么情况下会刷盘 redo log缓冲池满了,放 阅读全文
posted @ 2021-03-23 19:48 zliawk 阅读(134) 评论(0) 推荐(0)