mysql性能优化

导致数据库服务器处理速度慢的原因有哪些?

1.服务器硬件配置低

uptime             负载

iostat \ df -h            磁盘状态       

free -h          内存状态

 

2.服务器运行参数配置不合理

查看所有变量:show variables [like "%binlog%"];

查看状态:show global status [like "%innodb%"];

刷新状态信息:flush status;

查看与服务性能相关的参数:

1》max_connections:允许最大的并发连接数

修改:

1.set global max_connections=值;

2.echo max_connections=值 >> /etc/my.cnf

查看:

show variables like “max_connections”;

注意:

曾经并发数/设置的并发连接数=0.85

 

2》connect_timeout:连接超时时间(默认10秒)

3》wait_timeout:关闭数据库连接的不活动超时时间(默认8小时)

4》key_buffer_size:用于MYISAM引擎的关键索引缓存大小(默认8M)

5》sort_buffer_size:为每个要排序的线程分配此大小的缓存空间

6》read_buffer_size:为顺序读取表记录保留的缓存大小

7》thread_cache_size:允许保存在缓存中被重用的线程数量(默认9)

8》table_open_cache:为所有线程缓存的打开表的数量(默认2000)

 

 

SQL查询优化:

查询日志:记录客户端连接和查询操作(root+授权用户)

general_log                          ------------->重启mysqld服务                                   -----》默认在/var/lib/mysql/主机名.log

general_log_file=自定义日志路径                          //若自定义目录,则目录归属权限为mysql.mysql

 

慢查询日志:记录耗时较长或不使用索引的查询操作

slow_query_log                   //启用慢查询日志

slow_query_log_file=自定义慢查询日志的存储路径             默认在/var/lib/mysql

log_query_time=数值                                     //超多少秒加入日志(默认10秒)

log_queries_not_using_indexes                                     //不使用索引的加入日志

--------------------------------------》重启mysqld服务                          ----》生成/var/lib/mysql/主机名-slow.log

 

统计慢查询日志到文件中:

mysqldumpslow     /var/lib/mysql/主机名-slow.log    >  文件名

 

查看缓存的大小:

show variables like "query_cache%";

query_cache_size                         //查看缓存大小

query_cache_type             //查看缓存是否开启

 

查看当前的查询缓存统计:

show global status like "qcache%";

qcache_hits:在查询缓存里面查找到的数据次数

 

步骤:

升级服务器硬件

加大网络带宽

调整mysql服务运行参数

调整与查询相关的参数

启用慢查询日志

网络架构不合理

posted @ 2020-09-10 11:05  krystal_LA  阅读(94)  评论(0编辑  收藏  举报