高性能mysql 之 性能剖析

标签: 性能 mysql 性能 | 发表时间:2015-06-16 18:20 | 作者:annan211
出处:http://www.iteye.com

1 定义性能优化
  mysql服务器性能,此处定义为 响应时间。
  在解释性能优化之前,先来消除一个误解,很多人认为,性能优化就是降低cpu的利用率或者减少对资源的使用。
  这是一个陷阱。
  资源时用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度,保持cpu忙绿,这是必要的。很多时候发现
  编译进了新版本的InnoDB之后,cpu利用率上升的很厉害,这并不代表性能出现了问题。反而说新版本的InnoDB对cpu的利用率上升了。
  查询的响应时间更能体现性能是不是有所提升。cpu利用上升,之势一种现象,而不是很好的性能指标。
  
  还有一种理解,即性能优化仅仅是提升每秒查询量。这种误解,把吞吐量理解为性能优化,这恰恰是性能优化的倒数。
  吞吐量可以看做 性能优化的副产品,因为每条查询执行的时间被缩短了,所以单位时间内可以执行更多的查询,而这刚好是
  吞吐量的定义。
  
2 测量时间都花在哪了
  优化性能,即缩短查询时间,首先必须知道时间都花在哪了。
  
3 优化方法怎么样
  优化,很多人都会想到必须需要大量修改配置和sql或者策略。我们这里的方法完全相反,会把90%的精力放在测量时间花在哪里。
  如果通过测量没有找到答案,一般都是测量的方法出现了问题。
  
4 对性能进行剖析
  对性能进行剖析的步骤一般是 1 测量任务所花费的时间 2 对结果进行统计和排序将重要的排在前面。
  第一部分 剖析服务器负载
  
  1 学会使用工具new relic 这个软件。
  2 或者使用企业监控器 enterprise monitor,她可以捕获发送给服务器的查询。
  3 mysql 高级版本中 已经将慢查询日志的精度从秒提升到微妙级别,I/O开销也可以忽略不计,所以可以开启慢查询日志。
    慢查询日志分析工具 pt-query-digest
	
  第二部分 剖析单条查询
    1 查看profile mysql>show profiles;
	2 设置profiling mysql>set profiling=1;
	3 查看profiles mysql> show profiles;
	4 查看单条sql 执行过程 mysql> show profile for query 2;
	
  第三部分 使用show global status
    这个方法实际上就是以较高的频率捕获数据,问题出现时,则可以通过某些计数器的尖刺或者凸现
	来发现。这个方法比较简单,对服务器影响也比较小,所以是一个花费时间不多却能很好解决问题的方法,命令如下
	shell> mysqladmin -uroot -r -i 1 -proot extended-status | awk '/Queries/{q=$4-qp;qp=$4} /Threads_connected/{tc=$4} /Threads_running/{printf "%5d %5d %5d\n",q,tc,$4}' 
	这段shell 会每秒捕捉一次mysql数据库线程连接 ,打印数据库 每秒查询数、线程连接数、正在执行的线程数。
	这三个数据对于服务器级别偶尔停顿的敏感性很高,
	
	正常情况下 数据是稳定的,偶尔出现的尖刺必须引起足够的重视,根据实践,两方面的原因的可能性比较大
	一是服务器内部遇到了某种瓶颈,导致新查询在开始执行前需要获取老查询正在等待的锁而造成堆积,第二种原因是
	服务器可能突然遭到了大范围的查询请求,比如前端缓存失效。
	
	以上的这条命令可以执行几小时或者几天,然后绘制成图表,分析尖刺的原因。
	

	大量优秀的工具可以使用 pt-stalk pt-collect


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [性能 mysql 性能] 推荐:

MySQL 性能

- - 谁主沉浮
这里罗列了一些基本的 MySQL 性能提示,但不是放之四海而皆准,需要根据实际的应用情况而决定. 使用标准化设计(数据库三范式),记住表的联合查询(join)性能不会差. 选择合适的字符集,虽然UTF16无所不能,但需要两倍的存储;UTF8适合各种字符,但比latin1慢,尽可能选用latin1(此条不适合中文).

MySQL性能优化

- sun - IT程序员面试网
在笔试面试中,尤其是像百度,淘宝这些数据量非常大,而且用LAMP架构的公司,数据库优化方面就显得特别重要了. 此外,除了数据库索引之外,在LAMP结果如此流行的今天,数据库(尤其是MySQL)性能优化也是海量数据处理的一个热点. 下面就结合自己的经验,聊一聊MySQL数据库优化的几个方面. 首先,在数据库设计的时候,要能够充分的利用索引带来的性能提升,至于如何建立索引,建立什么样的索引,在哪些字段上建立索引,上面已经讲的很清楚了,这里不在赘述.

Mysql性能优化

- - 数据库 - ITeye博客
MySQL性能优化.   性能优化是通过某些有效的方法来提高MySQL的运行速度,减少占用的磁盘空间. 性能优化包含很多方面,例如优化查询速度,优化更新速度和优化MySQL服务器等.   数据库管理人员可以使用SHOW STATUS语句来查询MySQL数据库的性能. 语法:SHOW STATUE LIKE ‘value’;其中value参数是常用的几个统计参数.

mysql 5.6性能vs mysql 5.5的讨论

- - ITeye博客
这几天老外就mysql 5.6和5.5,MariaDB的benchmark讨论的很热烈,参考http://t.cn/zYoXNND一文,而法国朋友身先士卒,在http://t.cn/zYKgDmk中一连做了多个评测. 1) 在大名顶顶的percona公司的Peter Zaitsev 一文中(http://www.mysqlperformanceblog.com/2013/02/18/is-mysql-5-6-slower-than-mysql-5-5/).

mysql性能优化教程

- coolzsb - caoz的和谐blog

mysql性能最大化

- - CSDN博客数据库推荐文章
#跳过外部锁定 只对MyISAM. #禁用tcp socket连接,只能使用unix/linux socket连接. #禁用DNS解析,提高连接速度. #跳过授权表,忘记root密码时使用. #服务器关闭一个交互连接前等待的秒数,默认28800. #线程缓存数,直接利用空闲连接来创建新连接,1G  —> 8 2G  —> 16 3G  —> 32 >3G  —> 64.

MySQL性能建议者:mysqltuner.pl

- - CSDN博客数据库推荐文章
一些简单的命令可从 --help 查阅. 输出结果简单明了,读者有兴趣可参阅官网博客. 作者:linwaterbin 发表于2013-10-23 0:13:37 原文链接. 阅读:147 评论:0 查看评论.

MySQL性能医生:OrzDBA

- - CSDN博客数据库推荐文章
A    trunk/orzdba工具使用说明.pdf. 需要在代码160行左右配置MySQL的相关验证信息,如username,password,host,port,sock等. ㈠ 查看MySQL响应时间(rt). 在源码161行左右把 /usr/bin/tcprstat 加入默认读取的位置. 再解压orzdba_rt_depend_perl_module.tar.gz,安装rt所依赖的perl模块.

mysql 性能调优(转)

- - 数据库 - ITeye博客
转自:http://suhuanzheng7784877.iteye.com/blog/2047209. Mysql高性能学习笔记-01. Mysql整体的架构模块如下图所示. 模块1:连接客户端,这个一般是指mysql基于mysql通讯协议的驱动程序. 比如mysql的Java的JDBC驱动程序——mysql-connector-java-5.1.26-bin.jar.

[转]MySQL性能优化

- -
  IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是 SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段.   2.降低 CPU 计算.   除了 IO 瓶颈之外,SQL优化中需要考虑的就是 CPU 运算量的优化了.