小樱 发表于 2022/6/17 21:15

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

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

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

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

显示当前连接数
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
show status like 'Open_files';

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

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

若正确设置查询缓存将带来性能上的极大提升。您可以通过设置 query_cache_size 为 2 位数的 MB 值和设置 query_cache_type 为 'ON'。注意: 若您正在使用 memcached,请忽略此建议。
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)

检查启用查询缓存后的命中率和剩余空闲可用内存情况
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权限
flush query cache;

清空缓存,释放可用内存,需要root权限
reset query cache;

使用完毕后退出数据库
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

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