SlideShare a Scribd company logo
1 of 38
Download to read offline
Mysql快速讲义
峰云就她了了
xiaorui.cc
about me
Name: 峰云就她了
Blog: xiaorui.cc
Github: github.com/rfyiamcool
Desc: 喜欢研究高性能服务端、数据库相关
LIST
01
02
03
04
Mysql Basic
Mysql集群
Mysql Ops
Mysql Optimize
01 基本选择
版本
Mysql >= 5.7
Percona # recommend
Mariadb
more …
引擎的选择
Myisam # 淘汰的玩意
Innodb # 优秀
Tokudb # ⾼压缩率
Myrocks # 基于lsm的rocksdb
表结构设计
innodb⼀定要有主键
主键最好整型, 并单调递增
将text/blob⼤对象独⽴存放
要注意字符集/ 校验集的⼀致性, 避免类型隐式转换
尽量不要使⽤外键
表使⽤规范
使⽤Not null, default ‘’
少⽤limit m, n取范围
多⽤limit, 减少检索及输出
避免 select *
避免使⽤ 存储过程
表使⽤规范
表的索引不要太多
表的字段不要太多
单表⾏数在1000w
索引基本规则
idx(a, b, c) HIT where a = x and b = x
idx(a, b, c) HIT where a > x
idx(a, b, c) Not HIT where b > x
idx(a, b, c) Not HIT where a > x and b = x
idx(a, b, c) Not HIT where a = x and c = x
索引基本规则
idx(sex)
没必要建⽴索引
显⽰ 和 隐式 join 性能与结果⼀致
from a,b vs from a inner join b on
索引⾼级规则
idx(a, b, c) HIT where a = x order by b
idx(a, b, c) HIT where a > x order by a
idx(a, b, c) HIT where a = x and b > x order by a
idx(a, b, c) Not HIT where a > x order by b
idx(a, b, c) HIT where a = x group by a, b
idx(a, b, c) Not HIT where a = x group by b
联表索引
驱动表
笛卡尔积
nested loop join
for each row in t1 matching range {
for each row in t2 matching refer key {
for each row in t3 {
if row satisfies join conditions,
send to client
}
}
}
联表查询
简单说, ⼩表驱动⼤表
右表的条件列⼀定要加上索引
显⽰ 和 隐式 join 性能与结果⼀致
from a, b vs from a inner join b on
Inner⾃动选择驱动表, left join 选择左⾯表.
关键
多⽤Explain
多看慢查询
优化器会随着数据量变⼤发⽣变化
explain
using index;
using where;
using where; using index;
using filesort;
using temporary;
High
Low
02 排查问题
事务锁
INFORMATION_SCHEMA.INNODB_TRX
INNODB_LOCKS
INNODB_LOCK_WAITS
通过三表信息能快速发现哪些事务在阻塞其他事务
慢查询
slow_query_log # 开关
slow_query_log_file # ⽇志路径
long_query_time # 超时时间
开启定义慢查询条件及开关
管理连接
show processlist; # 正在进⾏行行的sql语句句 .
Sleep
Sending data
Waiting for tables
more…
kill id;
杀掉某任务
03 Ops Mysql
修改表结构
阻塞
alter table xxxx
非阻塞
pecona/ pt-online-schema-change
触发器⽅案
github/ gh-ost
模拟主从协议
percona toolkit
pt-heartbeat
pt-table-checksum
pt-table-sync
pt-archiver
pt-kill
热备份
Mysqldump
⾮非⼀一致性备份
Mysqlpump
基于表并发
Percona XtraBackup
binlog2sql
1. binlog ⽇日志格式为 row
2. 找到相关的sql pos点
3. 导出回溯sql语句句
4. 导⼊入重写修改的数据
后悔药
04 Optimize Mysql
cmd
iostat -x 1
uptime
dstat
free -m
mpstat -p ALL
top
最重要 !!!
io
cpu
innodb
innodb_buffer_pool_size
innodb_log_file_size
innodb_log_buffer_size
innodb_flush_log_at_trx_commit
innodb_file_per_table
innodb_buffer_pool_instances
再提⾼
硬件
升级 SSD
升级 ⼤大内存
分布式
分库分表
中间件
system
⽂文件系统xfs/zfs
软中断
磁盘算法
05 mysql cluster
Master/Slave
Master
Slave
SlaveSlave
级联复制
HA
Master Slave
Master
Slave
Slave convert new Master !!!
mha ha
可靠 ?
slave replication
semi replication
semi replication +
主从切换的集群环境下:
不能保证消息的一致性
how ?
阿⾥里里⾃自研
腾讯⾃自研
京东⾃自研
各⼤大云⼚厂商⾃自研
more
通过paxos, raft来保证消息的一致性.
HA
keepalived multi master repl
heartbeat drdb
mysql galera
mha # recommend
mysql group replication # recommend
mgr
MasterMasterMaster
client client
中间件
Mycat # recommend
Kingshard
DBProxy
Cobar
More
Q & A

More Related Content

What's hot

Java内存管理问题案例分享
Java内存管理问题案例分享Java内存管理问题案例分享
Java内存管理问题案例分享bluedavy lin
 
并发编程交流
并发编程交流并发编程交流
并发编程交流bluedavy lin
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇bluedavy lin
 
Redis分享
Redis分享Redis分享
Redis分享yiihsia
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术Feng Yu
 
nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用dong yuwei
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流Edward Lee
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕ideawu
 
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇bluedavy lin
 
深入Docker的资源管理
深入Docker的资源管理深入Docker的资源管理
深入Docker的资源管理SpeedyCloud
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011Yiwei Ma
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查bluedavy lin
 
Lamp优化实践
Lamp优化实践Lamp优化实践
Lamp优化实践zhliji2
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查bluedavy lin
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmarkLouis liu
 
高性能并发网络服务器设计与实现
高性能并发网络服务器设计与实现高性能并发网络服务器设计与实现
高性能并发网络服务器设计与实现ideawu
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析vincent253
 
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙bluedavy lin
 

What's hot (20)

Java内存管理问题案例分享
Java内存管理问题案例分享Java内存管理问题案例分享
Java内存管理问题案例分享
 
并发编程交流
并发编程交流并发编程交流
并发编程交流
 
Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇Sun jdk 1.6内存管理 -使用篇
Sun jdk 1.6内存管理 -使用篇
 
Redis分享
Redis分享Redis分享
Redis分享
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用nodejs在微博前端开发中的应用
nodejs在微博前端开发中的应用
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕高性能并发Web服务器实现核心内幕
高性能并发Web服务器实现核心内幕
 
Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇Sun JDK 1.6内存管理 -调优篇
Sun JDK 1.6内存管理 -调优篇
 
深入Docker的资源管理
深入Docker的资源管理深入Docker的资源管理
深入Docker的资源管理
 
百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011百姓网如何优化网速-Qcon2011
百姓网如何优化网速-Qcon2011
 
Redis介绍
Redis介绍Redis介绍
Redis介绍
 
高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查高性能的Java代码编写及常见问题排查
高性能的Java代码编写及常见问题排查
 
Windbg入门
Windbg入门Windbg入门
Windbg入门
 
Lamp优化实践
Lamp优化实践Lamp优化实践
Lamp优化实践
 
Java常见问题排查
Java常见问题排查Java常见问题排查
Java常见问题排查
 
Infiniflash benchmark
Infiniflash benchmarkInfiniflash benchmark
Infiniflash benchmark
 
高性能并发网络服务器设计与实现
高性能并发网络服务器设计与实现高性能并发网络服务器设计与实现
高性能并发网络服务器设计与实现
 
Redis 常见使用模式分析
Redis 常见使用模式分析Redis 常见使用模式分析
Redis 常见使用模式分析
 
HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙HBase@taobao for 技术沙龙
HBase@taobao for 技术沙龙
 

Similar to Mysql fast share

Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Yousri Yan
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规isnull
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规mysqlops
 
Mysql遇到的一些问题
Mysql遇到的一些问题Mysql遇到的一些问题
Mysql遇到的一些问题wang tongchao
 
Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例maclean liu
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践wubx
 
Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化向 翔
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展yp_fangdong
 
Mysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationMysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationisnull
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江thinkinlamp
 
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql2011 06-12-lamp-mysql
2011 06-12-lamp-mysqlpwesh
 
Tokyo Cabinet
Tokyo CabinetTokyo Cabinet
Tokyo Cabinetrewinx
 
Tokyo Cabinet Key Value数据库及其扩展应用
Tokyo Cabinet  Key Value数据库及其扩展应用Tokyo Cabinet  Key Value数据库及其扩展应用
Tokyo Cabinet Key Value数据库及其扩展应用rewinx
 
MySQL运维那些事
MySQL运维那些事 MySQL运维那些事
MySQL运维那些事 Leo Zhou
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon databoxu42
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Harvey Zhang
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & developmentXuefeng Zhang
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsHo Kim
 

Similar to Mysql fast share (20)

Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整Mysql数据库开发的三十六条军规 石展_完整
Mysql数据库开发的三十六条军规 石展_完整
 
My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规My sql数据库开发的三十六条军规
My sql数据库开发的三十六条军规
 
MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规MySQL数据库开发的三十六条军规
MySQL数据库开发的三十六条军规
 
Optimzing mysql
Optimzing mysqlOptimzing mysql
Optimzing mysql
 
Mysql遇到的一些问题
Mysql遇到的一些问题Mysql遇到的一些问题
Mysql遇到的一些问题
 
Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例
 
基于Innodb开发的最佳实践
基于Innodb开发的最佳实践基于Innodb开发的最佳实践
基于Innodb开发的最佳实践
 
Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化Sql Server 高级技巧系列之三整体优化
Sql Server 高级技巧系列之三整体优化
 
Cdc@ganji.com
Cdc@ganji.comCdc@ganji.com
Cdc@ganji.com
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展
 
Mysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimizationMysql introduction-and-performance-optimization
Mysql introduction-and-performance-optimization
 
2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江2011 06-12-lamp-mysql-顾春江
2011 06-12-lamp-mysql-顾春江
 
2011 06-12-lamp-mysql
2011 06-12-lamp-mysql2011 06-12-lamp-mysql
2011 06-12-lamp-mysql
 
Tokyo Cabinet
Tokyo CabinetTokyo Cabinet
Tokyo Cabinet
 
Tokyo Cabinet Key Value数据库及其扩展应用
Tokyo Cabinet  Key Value数据库及其扩展应用Tokyo Cabinet  Key Value数据库及其扩展应用
Tokyo Cabinet Key Value数据库及其扩展应用
 
MySQL运维那些事
MySQL运维那些事 MySQL运维那些事
MySQL运维那些事
 
Build 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon dataBuild 1 trillion warehouse based on carbon data
Build 1 trillion warehouse based on carbon data
 
Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化Avm2虚拟机浅析与as3性能优化
Avm2虚拟机浅析与as3性能优化
 
N-layer design & development
N-layer design & developmentN-layer design & development
N-layer design & development
 
PHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming SkillsPHP Coding Standard and 50+ Programming Skills
PHP Coding Standard and 50+ Programming Skills
 

More from rfyiamcool

python高级内存管理
python高级内存管理python高级内存管理
python高级内存管理rfyiamcool
 
分析mysql acid 设计实现
分析mysql acid 设计实现分析mysql acid 设计实现
分析mysql acid 设计实现rfyiamcool
 
大话redis设计实现
大话redis设计实现大话redis设计实现
大话redis设计实现rfyiamcool
 
async io frame
async io frameasync io frame
async io framerfyiamcool
 
异步io框架的实现
异步io框架的实现异步io框架的实现
异步io框架的实现rfyiamcool
 
美妙的多进程管理
美妙的多进程管理美妙的多进程管理
美妙的多进程管理rfyiamcool
 

More from rfyiamcool (9)

python高级内存管理
python高级内存管理python高级内存管理
python高级内存管理
 
Micro service
Micro serviceMicro service
Micro service
 
分析mysql acid 设计实现
分析mysql acid 设计实现分析mysql acid 设计实现
分析mysql acid 设计实现
 
Raft
Raft Raft
Raft
 
大话redis设计实现
大话redis设计实现大话redis设计实现
大话redis设计实现
 
python gil
python gilpython gil
python gil
 
async io frame
async io frameasync io frame
async io frame
 
异步io框架的实现
异步io框架的实现异步io框架的实现
异步io框架的实现
 
美妙的多进程管理
美妙的多进程管理美妙的多进程管理
美妙的多进程管理
 

Mysql fast share