mysql数据库 调优

mysql调优
硬件配置
网络带宽
mysql运行参数
慢查询日志
网络架构
多实例(一台服务器上运行多个数据库服务)
分库
分表

当一台数据库服务器处理客户端的请求慢时,
可能是哪些原因造成?

硬件配置低:(内存 cpu 硬盘i/o )
查看硬件使用情况
free -m
top

网络带宽:
测试带宽(扩展带宽)

提供数据库服务软件的版本太低:
vim /etc/my.cnf
[mysqld]
选项-值(不选就是默认的)
/etc/init.d/mysql restart
数据库服务器处理查询请求的过程:连接池》sql接口》分析器》优化》存储引擎》文件系统》管理工具
接收到查询请求时,现在查询缓存里查找记录,如果有,直接回给客户端,
如果没有,到表里去找,找到后先将结果存储到查询缓存里,再回数据给客户端。

查看服务运行的参数值
mysql> show variables like "%关键字%";(查看)
mysql> set global 变量名=值;(修改)

并发连接数
mysql> show variables like "%connect%";(查看链接)
max_connections=151(默认151)
mysql> set global max_connections=200;(改为200)
mysql> show global status like "%connect%"; max_used_connections;(查看最大连接次数)
并发量最优公式:max_used_connections/max_connections = 0.85*100%=85%

链接超时时间
mysql> show variables like "%timeout%";(查看超时时间)
建立连接时的超时时间connect_timeout=10 默认10秒
建立连接后,等待sql命令的超时时间wait_timeout=28800 默认28800秒

查询缓存大小
mysql> show variables like "%cache%";(查看查询)
mysql> show variables like "%query_cache%";(查看查询大小)
query_cache_size=1048576 大于1048576这个数,不让存进去

查看查询缓存的统计信息
mysql> show global status like "%qcache%";
Qcache_hits(在查询缓存找一次+1)
Qcache_inserts(查询总数)

可重复使用的线程数量
可以保存在内存里,可以重复使用的线程的数量
mysql> show variables like "%thread%";
thread_cache_size=9 默认9个

所有线程打开表的总数
mysql> mysql> show variables like "%table%";
table_open_cache=2000 默认2000
key-buffer-size:用于myisam引擎的关键索引缓存大小
sort-buffer-size:为每个要排序的线程分配此大小的缓存空间
read-buffer-size:为顺序读取表记录保留的缓存大小
thread-cache-size: 允许保存在缓存中被重用的线程数量

程序猿编写提取数据的sql命令太复杂:
查看记录
单表 多表 嵌套 连接
解决:启用慢查询日志,记录客户端连接后
超过指定时间显示查询结果的sql命令
mysql服务的日志类型:
错误日志:默认启用,记录的服务在启动和运行过程中的错误信息
binlg日志:默认没有启用,记录客户端连接服务器后,执行的除查询之外的sql命令
慢查询日志:默认没有启用,记录客户端连接后,超过指定时间显示查询结果的sql命令
查询日志:默认没有启用,记录客户端链接后,执行的所有sql命令

慢查询日志的使用:
vim /etc/my.cnf
slow-query-log(日志存储位置,默认在数据库目录下,主机名-slow.log)
long-query-time=5(超时时间,默认10秒)
/etc/init.d/mysql restart(重启服务)
[root@158 mysql]# mysqldumpslow /var/lib/mysql/158-slow.log > /opt/sql.txt(把超时的查询语句重定向到文件里)

查询日志的使用:
vim /etc/my.cnf
general-log(日志存储位置,默认在数据库目录下,主机名.log)
[root@158 mysql]# cat 158.log

网络架构有问题:
重新规划网络

——————————————————————————————————————————————————————————————————————————————————————————

上一篇:mysql 创建存储过程


下一篇:xadmin插件开发