设为首页收藏本站

ZMX - IT技术交流论坛 - 无限Perfect,追求梦想 - itzmx.com

 找回密码
 注册论坛

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

用百度帐号登录

只需两步,快速登录

搜索
查看: 67|回复: 0

Windows服务器使用cmd命令连接mysql数据库查询监控状态的办法,以便进行性能优化my.ini配置文件

[复制链接]
 成长值: 28920

签到天数: 3831 天

[LV.Master]伴坛终老

发表于 2022/6/17 21:15 | 显示全部楼层 |阅读模式 |Google Chrome 102.0.5005.124|Windows 10
天涯海角搜一下: 百度 谷歌 360 搜狗 有道 雅虎 必应 即刻
Windows服务器使用cmd命令连接mysql数据库查询监控状态的办法,以便进行性能优化my.ini配置文件

任务管理器,详细信息选项,点击右键打开文件所在位置,资源管理器上单击空白处以便取消文件选中状态,之后按下键盘左下角的shift按键并且点击鼠标右键,使用在此处打开Powershell窗口
执行cmd命令切换到命令管理器

接下来在cmd窗口输入下方命令连接mysql,密码改成你自己的
  1. mysql -u root -padmin
复制代码


显示当前连接数
  1. show status like 'Threads%';
复制代码
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 54    |  #线程缓存中线程的数量。缓存命中率可以由 Threads_created/Connections 计算得出。如果该值是红色的,则应该增加 thread_cache_size 的值。
| Threads_connected | 1     |  #当前打开的连接数。
| Threads_created   | 55    |  #当前用于控制连接的线程数。如果 Threads_created 很大,您可能需要增加 thread_cache_size 的值。(如果线程状况良好,这么做通常并不会带来显著的性能提升。)
| Threads_running   | 1     |  #非睡眠状态的线程数量。
+-------------------+-------+
4 rows in set (0.01 sec)


打开的文件个数,建议设置数值为open_files_limit=102400
  1. show status like 'Open_files';
复制代码


打开的数据表个数,一般来说table_open_cache 是最终影响CPU性能的,可以适当调大,比如说2048,值越大时内存使用量越高
  1. show status like 'Open_tables';
复制代码


服务器执行语句时自动在磁盘上创建的临时表的数量。如果 Created_tmp_disk_tables 很大,你可以增加 tmp_table_size 的值,让服务器使用内存来存储临时表而非磁盘。
  1. show status like 'Created_tmp_disk_tables';
复制代码


若正确设置查询缓存将带来性能上的极大提升。您可以通过设置 query_cache_size 为 2 位数的 MB 值和设置 query_cache_type 为 'ON'。注意: 若您正在使用 memcached,请忽略此建议。
  1. show variables like 'query_cache%';
复制代码
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| query_cache_limit            | 1048576  |  #限制单个查询缓存1MB最大值,建议保持默认
| query_cache_min_res_unit     | 4096     |  #大于4KB的查询才会被缓存,建议设置为256字节(1KB=1024字节)
| query_cache_size             | 1048576 |  #默认值1MB,查询缓存建议设置不超过128MB,设置更大的缓存会导致内存索引速度过慢
| query_cache_type             | OFF      |  #因为使用memcached,所以查询缓存没有启用,一般无需开启
| query_cache_wlock_invalidate | OFF      |  #保持默认OFF代表允许锁表时直接调用cache缓存取结果
+------------------------------+----------+
5 rows in set, 1 warning (0.02 sec)


检查启用查询缓存后的命中率和剩余空闲可用内存情况
  1. show status like 'Qcache%';
复制代码
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 126369    |  #剩余可用于缓存的blocks数量
| Qcache_free_memory      | 698801528 |  #剩余可用于缓存的内存大小为666MB
| Qcache_hits             | 6378016   |  #缓存命中次数
| Qcache_inserts          | 9832350   |  #回源次数
| Qcache_lowmem_prunes    | 508002    |  #因剩余内存不足而删除缓存的次数,原因一般是查询数量不足或者可用内存不足
| Qcache_not_cached       | 102783    |  #大于单个查询缓存最大值而不缓存的次数,query_cache_limit控制,默认值1MB
| Qcache_queries_in_cache | 252608    |  #当前缓存中的查询数量,设置query_cache_size值为1024MB,query_cache_min_res_unit值为4KB时,可通过计算出最大值为262144
| Qcache_total_blocks     | 632025    |  #总共使用的blocks数量
+-------------------------+-----------+
8 rows in set (0.00 sec)


刷新缓存,标记为过期,需要root权限
  1. flush query cache;
复制代码


清空缓存,释放可用内存,需要root权限
  1. reset query cache;
复制代码


使用完毕后退出数据库
  1. quit
复制代码


注:一般不建议设置query_cache_type来启用查询缓存,因为有出现过几次假死进程,mysql只占用一个CPU核心死循环可能有BUG,导致出现站点无法访问的现象。
所以mysql官方解决办法是从MySQL 5.7.20开始,查询缓存已弃用,并在MySQL 8.0中删除。

之后进行my.ini配置文件修改,然后在任务管理器,服务中找到mysql点击右键,重新启动即可。

参考数据来自官方wiki文档:https://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html

[发帖际遇]: 小樱 乐于助人,奖励 3 贡献. 幸运榜 / 衰神榜
欢迎光临IT技术交流论坛:http://bbs.itzmx.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册论坛 新浪微博账号登陆用百度帐号登录

本版积分规则

手机版|Archiver|Mail me|网站地图|IT技术交流论坛 ( 闽ICP备13013206号-7 )

GMT+8, 2022/6/30 12:24 , Processed in 0.367274 second(s), 20 queries , MemCache On.

Powered by itzmx! X3.4

© 2011- sakura

快速回复 返回顶部 返回列表