mysql的7天训练营笔记
第4天:
今天的内容比较干货,但是难吸收。作业都没有,说明实践很难。
笔记如下:
mysql8.0的select 语法结构:查询表达式、表对象、where过滤条件、order by / group by 、limit offset、window、having condition、Lock Clause、Union
子查询出现在:表对象中-叫Derived table, 查询表达式-Scalar Operand,where/having-Comparison
关联/非关联子查询
多表Join: inner join * outer join +输出至少一张表的全部记录 Left/right join * semi join * anti join
查询的执行策略
表访问方式:全表扫描、索引-、索引Range、索引ref查询=
order by 满足索引上最左匹配; filesort排序 (group by 临时表分组)
Derived table. Merge-简单的可以;物化-临时表
Scalar Operand. 物化;Semi join-关联子查询;嵌套执行-效率最差
多表join: Nest Loop Join * Block NL * Block Key Access Join * Hash join
执行计划:explain query statement
实战。这里多看多理解吧。有挺多例子SQL的explain输出信息的讲解,完全覆盖了上面的理论点。
Optimize Trace。得到Explain产生的全过程。一条SQL从得到到执行的多个阶段的全过程。
第六天
概念:1首先都是MySql数据库服务器。但角色不同,我们称呼就不同了,
有A: 源/主库
有B: 副本/从/备/只读库
默认时异步,A发送事务的更新到B,A上事务的提交不等待B的任何反馈
半同步复制:弹性同步复制,广泛使用(但异地灾备还是得异步)。大多数是同步状态(A发送事务的更新到B,A上事务的提交需要等待B接受到这个事务的反馈),网络闪断和大事务情况下转换为异步复制,B追上A后,转换为同步复制
binary log = binlog 是Mysql Replication的根基
自动连接基于GTID做到(全局事务标识符:server_uuid:nuber)
同步复制状态下,A崩溃,直接切换到B,B升级为新主库对外服务
异步复制状态下,...必须把主库拉起, 对外服务
异地灾备-双活 有点不明白
北京主A、上海主B,同时使用,2者之间互相同步,我的理解AB之间的数据保持动态的一致,业务上如何保证?
假如有一个热点账户记录,AB同时有更新,同时互相同步,是不是乱套了?
一个事实:B的并发度低于A的并发度。A可以万箭齐发,B也得一箭一箭发(前面好像讲B有schedule分配到多个worker,没讲完)
解决:非持久化,事务在内存中执行和提交
- 点赞
- 收藏
- 关注作者
评论(0)