阿里云开发者社区

MGR

MGR 是具备强大的分布式协调能能力,可用于创建弹性、高可用性、高容错的复制拓扑的 MySQL 插件

  • 通讯协议,基于Paxos算法的GCS原子广播协议
  • 组成员资格,视图服务,集群节点交互各自的视图信息
  • 数据一致性,事物之间修改数据的冲突认证检测机制

集群架构
image.png
单主模式、多主模式

数据同步原理

应用场景

  • 弹性复制。MySQL Server 数量动态增减
  • 高可用分片。基于MGR实现的高可用分片
  • 替代主从复制

MySQL 高并发场景实战

问题和挑战

  • 洪峰地并发
  • 热点行更新。多个用户争抢同一个商品的库存(就是数据库一行记录),行锁
  • 突发SQL访问
  • 智能化运维
  • 。。。等

系统调优

  • 容量评估
    • 经验评估
    • 单元压测(指单个模块)
    • 全链路压测
  • 性能评测
    • 基准测试(sysbench、mysqllap、ab)、仿真测试
    • 工具:PTS、DAS
  • 架构调优
    • 降低只读实例和主实例地延迟
      • 主实例地DDL
      • 将主实例地大事务,拆分成小事务
      • 主实例写入压力过大,可升级主实例和只读实例的规格
  • 实例调优
  • 内核调优
  • 监控报警

MySQL Java开发实战

为什么 MyBatis
从 JDBC、Hibernate/JPA、MyBatis(对动态SQL友好)

基本概念
架构:

  • 接口层,CRUD
  • 核心层,
  • 基础层,

image.png

连接池,无需浪费连接时间,连接数受控+健康探测、监控和管理灵活

。。。


MySQL查询优化实战

为什么优化:

  • 提高资源利用率
  • 避免短板
  • 提高系统吞吐量
  • 同时满足更多用户地在线需求

MySQL 优化目标

  • 减少磁盘IO
    • 全表扫描
    • 磁盘临时表
    • 日志、数据块 fsync
  • 减少网络带宽
    • 返回太多数据
    • 交互次数过多
  • 降低CPU消耗
    • 排序分组
    • 聚合函数
    • 逻辑读

关注的指标

  • CPU使用率
  • 。。。

image.png
指令:top、iostat、sar、dstat

image.png

SQL 优化原则与方法
原则:

  • 减少访问量
  • 减少计算操作

方法:

  • 创建索引减少扫描量
  • 调整索引减少计算量
  • 索引覆盖(减少不必访问的列,避免回表查询)
  • SQL改写
  • 干预执行计划

SQL 的执行过程
查询缓存、sql解析器、存储引擎接口

优化

  • selec 优化
  • subquery
    • 子查询会用到临时表,需尽量避免。可以用效率更高的 join 替代。
    • 优化策略:等价改写,反嵌套
  • limit 优化
    • limit 往往要排序 order by
    • 优化策略
      • 覆盖索引
      • SQL 改写。先通过覆盖索引找出主键id,然后再查

MySQL 开发规约实战

《Java开发手册》
语句规范要建立在结构规范上