mysql调优

mysql调优

调优的目的是突破性能瓶颈。性能监测的目的是测试瓶颈在哪里。不同的硬件,不同的系统,不同的应用,优化的重点/参数/方法都是不一样的。

对于mysql而言,调优也要从这三方面入手:硬件/系统/mysql应用。

1 硬件基础

1.1 cpu-NUMA架构

  在NUMA出现之前,cpu的所有core共享一个北桥来访问内存。cpu向多核多socket发展之后,总线争用问题就变得很突出,北桥的响应时间变长。所以北桥中的内存控制器被拆分,出现了NUMA架构(non-uniform memory access非统一型内存访问)架构。

  NUMA相关概念:node是一个逻辑概念,对应服务器上物理的socket。

  NUMA基本理解:一个node中有多个core,多个core共用一个内存控制器。core访问local memery速度较快。node之间通过互联模块,可以使core访问remote memery,但是速度较慢。如果一台四路服务器,就有4个node,core可以访问的remote memery有三个,访问速度与节点距离有关,称为node distance。

1.2 进程

  进程运行在cpu上,是硬件资源分配的对象。

  进程的生命周期和调用:父进程fork子进程,子进程执行代码然后返回信息给父进程,父进程回收相关资源。

  进程优先级:进程调度涉及优先级(nice level),范围是19~-20,值越小,nice越大,默认为0。如果调高nice值,进程被调度的频率就会下降,对cpu的争抢就会减少。

  context switch和中断::一个进程原在cpu中运行,现被中断,进程被刷到内存中。另一个进程切换到cpu中运行。

1.3 linux下的cpu调度

  user time:用户空间的cpu时间(未使用nice调度)。

  system time:系统内核程序的cpu时间。

  nice time:用户空间中经过nice调度的cpu时间。

  idel time:空闲cpu时间。

  wait time:cpu运行时在等磁盘io的时间。

1.4 Load average: the average of the sum of TASK_RUNNING(running or in the running queue) and TASK_UNINTERRUPTIBLE(不被中断,等待io完成) processes. If processes that request CPU time are blocked (which means that the CPU has no time to process them), the load average will increase. On the other hand, if each process gets immediate access to CPU time and there are no CPU cycles lost, the load will decrease.

 

posted @ 2018-03-22 11:33  Sinsen柳  阅读(115)  评论(0编辑  收藏  举报