Mysql性能测试&服务器性能剖析

注:本篇是《高性能Mysql》第三版的读书笔记

 

基准测试

基准测试即性能测试,是我们判断系统的正确性&负载量的一个得力助手。

基准测试可以评估在项目未来的负载下,需要什么硬件,需要多大容量的网络,以及其他相关资源。总之压测是必然的。

 

基准测试一共有两个测试策略。

1.针对整个系统的整体测试。包括web   mysql  网络  等等、所有的因素加到一起。

2. 单独测试Mysql    执行sql比较不同的scheme或查询的性能。

 

测试的指标分为吞吐量和响应时间。

吞吐量指的是单位时间内执行的事务数。叫做TPS

并发性。web服务器的并发性指的是在任意时间有多少同时发生的并发请求QPS。  数据库的并发可能打开了上千个连接,但只执行了数十个查询。并发性基准测试需要关注的是正在工作中的并发操作,或者是同时工作中的线程数。(MySQL中的连接池我理解为线程池)
可扩展性,给系统增加一倍的资源就能获得两倍的吞吐量、TPS

 

性能测试我就用过jmeter   可以起多个线程进行并发测试。

 

服务器性能剖析

性能优化是在固定的资源下能干更多的事情了,让资源利用率提升了。

一般对于一个接口/服务性能的排查过程可以在不同阶段打日志,先定位到整个服务/接口的问题出在哪,对应的慢查询进行优化!

可以使用navicat   explain 创建查询计划对sql进行分析。

想使用mysql查变量配置的值的命令:show  variables;

show  profiles;  可以查看消耗时间,在配置的时候要保证set  profiling = 1 这样才会展示消耗时间,navicat是带这个的。每次执行完都会有剖析,那个就是。状态是status

 

还可以使用show  profile  for  query  (query_id)  来获取制定查询的操作的耗时。

show status

返回一下计数器,既有服务器级别的全局计数器,也有基于某个连接的会话级别的计数器。

 

一个问题

在排查慢sql的时候我们可能就先执行  explain  使用查询计划,看一下有没有使用索引,有的时候发现使用索引了,但是为啥还是那么慢,我之前就有遇到过这个问题,这个一定要先从服务器出发,查看一下服务器的资源被啥占用了,有没有死锁或者竞争。

这个特别显著的特点就是:重启的mysql服务,刚开始执行查询并没有问题,过一会在执行就贼慢,不用犹豫,绝壁是服务器的问题导致的。

show PROCESSLIST   来观察线程的状态。

在排查的时候可以使用GDB作为堆栈跟踪,这个会阻塞住进程。当然gdb更适合调试那些你自己写的或者没有影响的进程,不然可能会造成问题,所以mysql服务器不太适合使用。但是gdb对其他东西的调试绝对是个很不错的选择。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章