在我们调优的过程中,有一个环节就是对数据库的最大并发数来进行调优,设置一个服务器能承受的并发数,就能最大的进行优化
- 查看数据库的配置文件的位置,先使用命令一,如果什么都没有出现,则默认使用了默认位置,此时执行命令二, 执行命令二后,会出现地址
命令1:ps aux|grep mysql|grep 'my.cnf'
命令2:mysql --help|grep 'my.cnf'
- 使用vim 逐一打开,查看数据库的配置到底在那个路径下,然后看到如图,修改成合适的连接数
系统支持的最大连接max_connections, 用户能最大连接进来的数量max_user_connections:
- 然后重启mysql :
service mysql restart 或 systemctl restart mysqld.service
- 整个mysql服务器的最大连接数:
show variables like '%max_connections%';
- 每个数据库用户的最大连接数,是限制用户连接的:
show global status like 'Max_used_connections';
- 对于mysql服务器最大连接数值的设置范围比较理想的是:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,如果在10%以下,说明mysql服务器最大连接上限值设置过高, 计算公式:Max_used_connections / max_connections * 100%
- 查看数据库连接情况(显示当前正在执行的MySQL连接)
show processlist;
- 常用的命令:
--查看MySQL本次启动后的运行时间(单位:秒)
show status like'uptime';
--查看select语句的执行数
show[global] status like 'com_select';
--查看insert语句的执行数
show[global] status like 'com_insert';
--查看update语句的执行数
show[global] status like 'com_update';
--查看delete语句的执行数
show[global] status like 'com_delete';
--查看试图连接到MySQL(不管是否连接成功)的连接数
show status like'connections';
--查看线程缓存内的线程的数量。
show status like'threads_cached';
--查看当前打开的连接的数量。
show status like'threads_connected';
--查看当前打开的连接的数量。
show status like'threads_connected';
--查看创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。
show status like'threads_created';
--查看激活的(非睡眠状态)线程数。
show status like'threads_running';
--查看立即获得的表的锁的次数。
show status like'table_locks_immediate';
--查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。
show status like'table_locks_waited';
--查看创建时间超过slow_launch_time秒的线程数。
show status like'slow_launch_threads';
--查看查询时间超过long_query_time秒的查询的个数。
show status like'slow_queries';
- 其余命令:show global status like ‘%下面变量%’;
Aborted_clients 由于客户没有正确关闭连接已经死掉,已经放弃的连接数量。
Aborted_connects 尝试已经失败的MySQL服务器的连接的次数。
Connections 试图连接MySQL服务器的次数。
Created_tmp_tables 当执行语句时,已经被创造了的隐含临时表的数量。
Delayed_insert_threads 正在使用的延迟插入处理器线程的数量。
Delayed_writes 用INSERT DELAYED写入的行数。
Delayed_errors 用INSERT DELAYED写入的发生某些错误(可能重复键值)的行数。
Flush_commands 执行FLUSH命令的次数。
Handler_delete 请求从一张表中删除行的次数。
Handler_read_first 请求读入表中第一行的次数。
Handler_read_key 请求数字基于键读行。
Handler_read_next 请求读入基于一个键的一行的次数。
Handler_read_rnd 请求读入基于一个固定位置的一行的次数。
Handler_update 请求更新表中一行的次数。
Handler_write 请求向表中插入一行的次数。
Key_blocks_used 用于关键字缓存的块的数量。
Key_read_requests 请求从缓存读入一个键值的次数。
Key_reads 从磁盘物理读入一个键值的次数。
Key_write_requests 请求将一个关键字块写入缓存次数。
Key_writes 将一个键值块物理写入磁盘的次数。
Max_used_connections 同时使用的连接的最大数目。
Not_flushed_key_blocks 在键缓存中已经改变但是还没被清空到磁盘上的键块。
Not_flushed_delayed_rows 在INSERT DELAY队列中等待写入的行的数量。
Open_tables 打开表的数量。
Open_files 打开文件的数量。
Open_streams 打开流的数量(主要用于日志记载)
Opened_tables 已经打开的表的数量。
Questions 发往服务器的查询的数量。
Slow_queries 要花超过long_query_time时间的查询数量。
Threads_connected 当前打开的连接的数量。
Threads_running 不在睡眠的线程数量。
Uptime 服务器工作了多少秒。