MGR
MGR 是具备强大的分布式协调能能力,可用于创建弹性、高可用性、高容错的复制拓扑的 MySQL 插件
- 通讯协议,基于Paxos算法的GCS原子广播协议
- 组成员资格,视图服务,集群节点交互各自的视图信息
- 数据一致性,事物之间修改数据的冲突认证检测机制
集群架构
单主模式、多主模式
数据同步原理
应用场景
- 弹性复制。MySQL Server 数量动态增减
- 高可用分片。基于MGR实现的高可用分片
- 替代主从复制
MySQL 高并发场景实战
问题和挑战
- 洪峰地并发
- 热点行更新。多个用户争抢同一个商品的库存(就是数据库一行记录),行锁
- 突发SQL访问
- 智能化运维
- 。。。等
系统调优
- 容量评估
- 经验评估
- 单元压测(指单个模块)
- 全链路压测
- 性能评测
- 基准测试(sysbench、mysqllap、ab)、仿真测试
- 工具:PTS、DAS
- 架构调优
- 降低只读实例和主实例地延迟
- 主实例地DDL
- 将主实例地大事务,拆分成小事务
- 主实例写入压力过大,可升级主实例和只读实例的规格
- 降低只读实例和主实例地延迟
- 实例调优
- 内核调优
- 监控报警
MySQL Java开发实战
为什么 MyBatis
从 JDBC、Hibernate/JPA、MyBatis(对动态SQL友好)
基本概念
架构:
- 接口层,CRUD
- 核心层,
- 基础层,

连接池,无需浪费连接时间,连接数受控+健康探测、监控和管理灵活
。。。
MySQL查询优化实战
为什么优化:
- 提高资源利用率
- 避免短板
- 提高系统吞吐量
- 同时满足更多用户地在线需求
MySQL 优化目标
- 减少磁盘IO
- 全表扫描
- 磁盘临时表
- 日志、数据块 fsync
- 减少网络带宽
- 返回太多数据
- 交互次数过多
- 降低CPU消耗
- 排序分组
- 聚合函数
- 逻辑读
关注的指标:
- CPU使用率
- 。。。

指令:top、iostat、sar、dstat

SQL 优化原则与方法
原则:
- 减少访问量
- 减少计算操作
方法:
- 创建索引减少扫描量
- 调整索引减少计算量
- 索引覆盖(减少不必访问的列,避免回表查询)
- SQL改写
- 干预执行计划
SQL 的执行过程
查询缓存、sql解析器、存储引擎接口
优化
- selec 优化
- subquery
- 子查询会用到临时表,需尽量避免。可以用效率更高的 join 替代。
- 优化策略:等价改写,反嵌套
- limit 优化
- limit 往往要排序 order by
- 优化策略
- 覆盖索引
- SQL 改写。先通过覆盖索引找出主键id,然后再查
MySQL 开发规约实战
《Java开发手册》
语句规范要建立在结构规范上
