SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
构建高性能MySQL系统

杨海朝
Senior MySQL DBA@SINA
jackbillow@gmail.com
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
什么构建?
优秀的架构设计
最佳的数据模型
高效的程序代码
合适的部署结构
适当的资源投入
为什么构建?
高性能
缩减成本
行业竞争优势
谁来构建?
SDLC的每个阶段所有的人都来关注性能
应用设计者
应用开发者
数据库管理员
系统工程师
构建目标?
可扩展
高可用
易管理
低成本
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
表设计思想
对于提升整个系统的性能
最佳时期
最容易
最大
Scale-out
优先级最高
避免XA
减少对DB的依赖
异步数据流
恰当使用Cache & Search
范式与反范式
与交易有关的使用范式
弱一致性需求-反ACID
空间换时间—BASE & CAP
表的设计
限制列的数量
分离到不同的表
频繁更新列
text & blob列
数据类型(1)
最小
最简单
避免使用NULL
数据类型(2)
字符类型选择
 MyISAM多使用char
 InnoDB多使用varchar

使用decimal而不是float & double
使用timestamp而不是datetime
部分日期用int存
 from_unixtime()
 unix_timestamp()
数据类型(3)
IP用int存
 inet_aton()
 inet_ntoa()

多使用enum, set
使用procedure analyse()
表存储引擎-MyISAM
采用MyISAM
R/W > 100:1 & update相对较少
并发不高,不需要事务
表数据量小
硬件资源有限
表存储引擎-InnoDB
采用InnoDB的表
OLTP,R/W相当,频繁更新大字段
表数据量超过1000万
安全性和可用性要求高
并发高
Sharding
垂直拆分
字段类型
业务功能
访问频率
MPSS -> MPMS

水平拆分
HASH
RANGE
INDEX MAP
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
索引设计思想
差的索引和没有索引效果一样
索引并非越多越好
优化该优化的语句
索引次序和索引中列的次序一样重要
频繁更新列不适合建立索引
索引设计一个是不断尝试和权衡的过程
信息收集
核心业务功能SQL是什么?
所有的SQL类型以及查询比例是什么?
是否分析过slow log?
索引创建原则
数量在5个以内
大字段建立部分索引
Selectivity性好的列优先考虑
建立联合索引多考虑列的次序
条件中尽量使用唯一key
聚集索引
熟悉clustered index和非聚集索引区别
多使用primary key查询
考虑primary key的列的数据类型
使用auto_increment时要小心
覆盖索引
数据直接从索引获得
加速sort和count(*)
索引设计工具
explain
show profiling
slow log
SQL hints
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
SQL设计思想
语句越简单越好
运算移到CPU端
尽可能避免使用sp,triggers, join, sort
一个SQL有多种写法,效率差别很大
评估效率差的SQL实时性要求
减少查询的次数
只取需要数据
SQL设计(1)
制定书写SQL的标准
避免select *
尽可能不在列运算
SQL设计(2)
多使用limit N
分页使用偏移量
不使用order by random()
SQL设计(3)
insert时一个语句多个value
replace & insert on duplicate key
 update
insert ignore, low priority或 delayed
SQL设计(4)
使用高版本connection driver
prepared statements和参数绑定
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
硬件和系统
更大的内存,更多的CPU
SSD: SBP, Flashcache & FushionIO
Linux kernel 2.6.x
IO调度使用deadline
MySQL5.1 + InnoDB Plugin
参数设置(1)
query_cache_size
table_cache
thread_cache_size
参数设置(2)
read_buffer_size
sort_buffer_size
join_buffer_size
read_rnd_buffer_size
bulk_insert_buffer_size
参数设置(3)
max_connections
max_user_connections
MyISAM参数设置
key_buffer_size
 (key_reads/key_read_requests) < 0.03   (often < 0.01
 is desirable)

myisam_sort_buffer_size
myisam_recover_options
myisam_repair_threads
InnoDB参数设置
innodb_buffer_pool_size
innodb_flush_log_at_trx_commit
innodb_log_buffer_size
innodb_log_file_size
innodb_flush_method
状态分析
show global status
show innodb status
mpstat, iostat, vmstat, top, innotop等
性能监控系统做性能分析和容量规划
议题
1. 构建综述
2. 表设计
3. 索引设计
4. SQL语句设计
5. 服务优化
6. 部署优化
读写分离
读写分离
 M/S不同的引擎类型
 功能不同的Slave组
高可用性部署
Master的HA
 Heartbeat+DRBD
 M(active)/M(passive)

Slave的HA
 负载均衡DNS, LVS
高可用性部署
结合cache部署
MySQL & Memecached
传统方式
UDF方式
跨机房部署(1)
采用Blackhole做中继
 减轻Master复制压力
 节省机房之间的网络带宽

分布式监控系统
 本地监控本地
 性能分析和容量规划
跨机房部署(2)
配合应用处理延时问题
 等待跳转
 即写既读Master
 写Master同时写本地cache

Slave重建问题
 每个区都有备份
 加快恢复速度
 减少网络带宽
跨机房部署(3)
多IDC部署时多点写入问题
不是所有的业务都部署多点写入
业务逻辑避开更新丢失
使用消息队列异步更新
开发基于binlog多点更新服务
跨机房部署(3)
and one for the road...
Last, but not least…
性能最大的提升来源于应用的设计和优化
优化过程是一个不断的迭代和权衡的过程
Thank you for coming!




        谢 谢!
        Q&A

Contenu connexe

Tendances

MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review郁萍 王
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎hdhappy001
 
MySQL5.6新功能
MySQL5.6新功能MySQL5.6新功能
MySQL5.6新功能郁萍 王
 
Mes 實作 第三週
Mes 實作 第三週Mes 實作 第三週
Mes 實作 第三週信宏 陳
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校國昭 張
 
Mes 實作 第二週
Mes 實作 第二週Mes 實作 第二週
Mes 實作 第二週信宏 陳
 
hicloud PaaS 雲創平台 for java developer
hicloud PaaS 雲創平台 for java developerhicloud PaaS 雲創平台 for java developer
hicloud PaaS 雲創平台 for java developerhicloud-paas
 
SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性
SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性
SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性SQLPASSTW
 
了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliance了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliancemaclean liu
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践drewz lin
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraJunchi Zhang
 
ASUSTOR NAS AS5 AS7 Rack mount business SMB
ASUSTOR NAS AS5 AS7 Rack mount business SMBASUSTOR NAS AS5 AS7 Rack mount business SMB
ASUSTOR NAS AS5 AS7 Rack mount business SMBFreddie Huang
 

Tendances (16)

MySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 ReviewMySQL5.6&5.7 Cluster 7.3 Review
MySQL5.6&5.7 Cluster 7.3 Review
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎王涛:基于Cloudera impala的非关系型数据库sql执行引擎
王涛:基于Cloudera impala的非关系型数据库sql执行引擎
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
MySQL5.6新功能
MySQL5.6新功能MySQL5.6新功能
MySQL5.6新功能
 
Mes 實作 第三週
Mes 實作 第三週Mes 實作 第三週
Mes 實作 第三週
 
SQL Server效能調校
SQL Server效能調校SQL Server效能調校
SQL Server效能調校
 
Mes 實作 第二週
Mes 實作 第二週Mes 實作 第二週
Mes 實作 第二週
 
hicloud PaaS 雲創平台 for java developer
hicloud PaaS 雲創平台 for java developerhicloud PaaS 雲創平台 for java developer
hicloud PaaS 雲創平台 for java developer
 
SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性
SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性
SQL PASS 臺灣分部八月份聚會 - Windows Azure 和 SQL Server 的Hybrid運用-備援以及高可用性
 
敦群學院-SharePoint精英計畫-系統管理-Day 3
敦群學院-SharePoint精英計畫-系統管理-Day 3敦群學院-SharePoint精英計畫-系統管理-Day 3
敦群學院-SharePoint精英計畫-系統管理-Day 3
 
了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliance了解真实的Oracle unbreakable database appliance
了解真实的Oracle unbreakable database appliance
 
阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践阿里自研数据库 Ocean base实践
阿里自研数据库 Ocean base实践
 
敦群學院-SharePoint精英計畫-系統管理-Day 2
敦群學院-SharePoint精英計畫-系統管理-Day 2敦群學院-SharePoint精英計畫-系統管理-Day 2
敦群學院-SharePoint精英計畫-系統管理-Day 2
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
 
ASUSTOR NAS AS5 AS7 Rack mount business SMB
ASUSTOR NAS AS5 AS7 Rack mount business SMBASUSTOR NAS AS5 AS7 Rack mount business SMB
ASUSTOR NAS AS5 AS7 Rack mount business SMB
 

En vedette

Enterprise rails hosting 3 ways to scale - 2011-10
Enterprise rails hosting   3 ways to scale - 2011-10 Enterprise rails hosting   3 ways to scale - 2011-10
Enterprise rails hosting 3 ways to scale - 2011-10 Avarteq
 
Kanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersKanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersAvarteq
 
BBVH Woonwijzer
BBVH WoonwijzerBBVH Woonwijzer
BBVH WoonwijzerBBVH
 
Kanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerKanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerAvarteq
 
Kanban - A recipe for success
Kanban - A recipe for successKanban - A recipe for success
Kanban - A recipe for successAvarteq
 
基于MySQL可扩展架构设计
基于MySQL可扩展架构设计基于MySQL可扩展架构设计
基于MySQL可扩展架构设计jackbillow
 
The Kanban method
The Kanban methodThe Kanban method
The Kanban methodAvarteq
 

En vedette (9)

JRuby
JRubyJRuby
JRuby
 
Enterprise rails hosting 3 ways to scale - 2011-10
Enterprise rails hosting   3 ways to scale - 2011-10 Enterprise rails hosting   3 ways to scale - 2011-10
Enterprise rails hosting 3 ways to scale - 2011-10
 
Kanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quartersKanban - Extreme improvements in five quarters
Kanban - Extreme improvements in five quarters
 
BBVH Woonwijzer
BBVH WoonwijzerBBVH Woonwijzer
BBVH Woonwijzer
 
Kanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile ManagerKanban: The Dilemma of an Agile Manager
Kanban: The Dilemma of an Agile Manager
 
Kanban - A recipe for success
Kanban - A recipe for successKanban - A recipe for success
Kanban - A recipe for success
 
基于MySQL可扩展架构设计
基于MySQL可扩展架构设计基于MySQL可扩展架构设计
基于MySQL可扩展架构设计
 
Fuerza Bruta
Fuerza BrutaFuerza Bruta
Fuerza Bruta
 
The Kanban method
The Kanban methodThe Kanban method
The Kanban method
 

Similaire à 构建高性能MySQL系统

淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)vanadies10
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统melity78
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层yp_fangdong
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙posestudio
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
P6 数据库安装和配置
P6 数据库安装和配置P6 数据库安装和配置
P6 数据库安装和配置epst
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统klandor
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介Allen Lsy
 
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享Dahui Feng
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC
 

Similaire à 构建高性能MySQL系统 (20)

淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)淘宝网架构变迁和挑战(Oracle架构师日)
淘宝网架构变迁和挑战(Oracle架构师日)
 
六合彩
六合彩六合彩
六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
敦群學院-SharePoint精英計畫-系統管理-Day 1
敦群學院-SharePoint精英計畫-系統管理-Day 1敦群學院-SharePoint精英計畫-系統管理-Day 1
敦群學院-SharePoint精英計畫-系統管理-Day 1
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
 
六合彩
六合彩六合彩
六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
imobile-beta技术沙龙
imobile-beta技术沙龙imobile-beta技术沙龙
imobile-beta技术沙龙
 
数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
P6 数据库安装和配置
P6 数据库安装和配置P6 数据库安装和配置
P6 数据库安装和配置
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享手机之家新系统介绍及架构分享
手机之家新系统介绍及架构分享
 
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
twMVC#04 | ASP.NET MVC 4 新功能介紹(快速上手)
 

构建高性能MySQL系统