zoukankan      html  css  js  c++  java
  • MySQL性能优化-内存参数配置

      Mysql对于内存的使用,可以分为两类,一类是我们无法通过配置参数来配置的,如Mysql服务器运行、解析、查询以及内部管理所消耗的内存;另一类如缓冲池所用的内存等。

      Mysql内存参数的配置及重要,设置不当很有可能会造成很大的性能问题甚至是服务器宕机,内存相关参数的配置需要考虑以下两点:

        (1)确定可以使用的内存上限;

        (2)确定Mysql每个连接使用的内存;

      在Mysql的体系中(如下图所示),简单来说可以分为两层,第一层代表各种可以用过Mysql连接协议连接到Mysql的客户端,例如PHP、JAVA、C API 、.NET、ODBC、JDBC等等,这一层主要负责连接管理、授权认证、安全等,连接到Mysql的客户端都会在服务器的进程中有一个独立的线程,这个连接的查询只会单独的在这个线程中执行,也就是并不支持多CPU的并发运算。第二层可以概括为Mysql的服务层。

      

      在服务器中每个连接所分配的内存主要由下面四个参数控制:

      (1)sort_buffer_size 连接进行排序时候分配该配置参数大小的内存进行排序操作,比如该大小设置为100M,如果有100个连接同时进行排序将分配10G的内存,很容易造成服务器内存溢出;

      (2)join_buffer_size  定义mysql的每个线程所使用连接的缓冲区的大小,对于这个参数需要注意的是,如果一个查询中关联了多张表,那么就会为每个关联分配一个连接缓存,所以每个查询可能会有多个连接缓冲;

      (3)read_buffer_size 对MyISAM表进行全表扫描时分配的读缓存池的大小,mysql只会在有查询需要时为该缓存分配内存,分配的内存为配置参数指定内存的大小,大小一般为4K的倍数;

      (4)read_rnd_buffer_size 索引缓冲区的大小,有查询需要时才分配内存,分配的大小为需要内存的大小,而不是配置参数的大小;

      上面四个参数全部是为每个线程分配的,如果有一百个连接可能会分配100倍以上内存的和。

  • 相关阅读:
    需求采集
    <转>jmeter(十七)目录结构
    《Google软件测试之道》测试开发工程师
    聊聊学习和读书这件事
    聊聊用户
    jmeter(十六)配置元件之计数器
    《探索性软件测试》
    一个完整的性能测试流程
    js外部样式和style属性的添加移除
    jquery获取第一层li
  • 原文地址:https://www.cnblogs.com/dquery/p/6935692.html
Copyright © 2011-2022 走看看