mysql性能优化

导致数据库服务器响应客户端的访问请求慢:

1 硬件配置低:cpu(uptime,top) 内存(free -m) 硬盘I/O(top中的wa)

2 带宽:网络测速软件

3 数据库版本低,修改服务运行时配置参数 :

命令行修改,重启服务失效

#mysql>set [global] 变量名=值;

查看变量

#mysql>show variables like "%关键字%"

修改配置文件,永久生效;

vim /etc/my.conf

[mysqld]

变量名=值

影响处理速度参数有那些?

max_connections:最大并发连接数

曾经有过的最大连接数/max_connections=0.85

曾经有过的最大连接数:#mysql>show global status like "max_used_connections";

显示当前的连接信息:#mysql>show processlist;

connect_timeout:建立连接时,tcp三次握手的超时时间,默认10秒

wait_timeout:连接建立后,等待断开的超时时间,默认8个小时

thread_cache_size:充许保存在缓存中可以重复使用线程数量 

table_open_cache=3:为所有线程缓存的打开表的数量

mysql的功能模块
连接池:    接收到客户端连接时,检查是否有线程 和资源响应本次连接
SQL接口:   把sql命令传递给mysql服务处理
分析器:  检查sql命令语法是否正确
优化器:   对执行的sql命令做优化处理
查询缓存:   查询缓存空间是从机器的物理内存划分出来的,存储曾经查找过的记录。

表记录。
存储引擎 表处理器 (myisam / innodb )
文件系统 硬盘(存储服务器)

管理工具 软件安装后提供的命令

数据库服务器处理客户端查询请求的过程?
当数据库服务器接收到查询请求时,先在本机的查询缓存里查询数据。若查询

缓存里有查找的数据,从查询缓存提取数据,返给客户端,若没有,到表中查

找记录,找到之后,先把查询结果存放到查询缓存里,在把结果返给客户端。

查看数据库服务器与查询相关参数的设置
mysql> show variables like "query_cache%";
query_cache_type = 0|1|2
0 不允许存

1|2 允许存

1 只要查询结果没超过query_cache_limit就可以存
2 程序要在执行查询时,要在查询命令里加 select 加存放本次查询结果的关键字 * from a;

query_cache_wlock_invalidate | OFF
当客户端查询myisam存储引擎的表时,若此时有客户端同时对查询的表做写

操作的话,数据库服务不从查询缓存里提取查询结果返给客户端,而是等对表

的写操作完成后,重新从表里查找记录返给客户端。

查看当前数据库服务器查询缓存的统计信息
mysql> show global status like "qcache%";
Qcache_hits 5 查询结果是在查询缓存里找到的次数
Qcache_inserts 50 查询请求总数

Qcache_lowmem_prunes 查询缓存空间不足的次数

查询日志文件:记录客户端连接后执行的所有sql命令

general-log

general-log-file=目录名/文件名

慢查询日志:

slow-query-log

slow-query-time=3(超过指定秒数的查询才被记录)

slow-query-log-file=目录名/文件名

#mysqldumpslow db20-slow.log

Qcache_not_cached 35 不允许把查询结果存放到查询缓存里的次数

innodb_lock_wait_timeout 50



原文地址:https://www.cnblogs.com/wwchihiro/p/9107750.html