mysql查看数据库命令

发布时间: 2023-11-21 10:48 阅读: 文章来源:1MUMB149PS
MySQL查看数据库性能常用命令# 列出MySQL服务器运行各种状态值show global status;# 查询MySQL服务器配置信息语句show variables;# 慢查询show variables like ‘%slow%‘;# MySQL服务器最大连接数show variables like ‘max_connections‘; # 服务器响应的最大连接数show global status like ‘Max_used_connections‘;# 查看试图连接到MySQL(不管是否连接成功)的连接数show status like ‘connections‘;# 创建临时表show global status like ‘created_tmp%‘; # MySQL服务器对临时表的配置show variables where Variable_name in (‘tmp_table_size‘, ‘max_heap_table_size‘); # 打开表的数量show global status like ‘open%tables%‘; # table高速缓存的数量show variables like ‘table_open_cache‘; # 查看MySQL服务器的线程信息show global status like ‘Thread%‘;# 查看当前运行的sqlSELECT * FROM `information_schema`.`PROCESSLIST` WHERE `info` IS NOT NULL and TIME > 0# 当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)show variables like ‘thread_cache_size‘; # 查询缓存show global status like ‘qcache%‘; # 查询缓存适用于特定的场景,建议充分测试后,再考虑开启,避免引起性能下降或引入其他问题show variables like ‘query_cache%‘; # 排序使用情况show global status like ‘sort%‘; # 文件打开数show global status like ‘open_files‘; # 表锁情况show global status like ‘table_locks%‘; # 表扫描情况show global status like ‘handler_read%‘; # 服务器完成的查询请求show global status like ‘com_select‘; # 查询当前MySQL本次启动后的运行统计时间show status like ‘uptime‘;# 查看本次MySQL启动后执行的select语句的次数show status like ‘com_select‘;# 查看本次MySQL启动后执行insert语句的次数show global status like ‘com_insert‘;# 查看本次MySQL启动后执行update语句的次数show global status like ‘com_update‘;# 查看本次MySQL启动后执行delete语句的次数show global status like ‘com_delete‘;# 查看立即获得的表的锁的次数show status like ‘table_locks_immediate‘;# 查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制show status like ‘table_locks_waited‘;# 查看查询时间超过long_query_time秒的查询的个数show status like ‘slow_queries‘;# 通过mysql自带profiling(性能分析)工具可以诊断某个sql各个执行阶段消耗的时间,每个执行阶段在cpu disk io等方面的消耗情况。show variables like ‘%profiling%‘;# show profilesshow profile for query 2;show profile cpu, block io for query 2;实战查询服务器状态和配置# 列出MySQL服务器运行各种状态值show global status;所有数据一目了然,参数有点多,分成另一篇文章来介绍[https://www.cnblogs.com/LoveBB/p/17194556.html]。慢查询# 慢查询show variables like ‘%slow%‘;

配置中关闭了记录慢查询,打开之后,你可以分析慢查询日志,找出有问题的SQL语句,慢查询时间不宜设置过长,否则意义不大,最好在5秒以内。打开慢查询日志可能会对系统性能有一点点影响,如果你的MySQL是主-从结构,可以考虑打开其中一台从服务器的慢查询日志,这样既可以监控慢查询,对系统性能影响又小。连接数

MySQL: ERROR 1040: Too many connections

一种是访问量确实很高,MySQL服务器抗不住,这个时候就要考虑增加从服务器分散读压力,另外一种情况是MySQL配置文件中max_connections值过小:  

# MySQL服务器最大连接数show variables like ‘max_connections‘;

这台MySQL服务器最大连接数是5275,然后查询一下服务器响应的最大连接数:# 服务器响应的最大连接数show global status like ‘Max_used_connections‘;

MySQL服务器过去的最大连接数是62,没有达到服务器连接数上限5275,应该没有出现1040错误,比较理想的设置是Max_used_connections / max_connections * 100% 85%最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。这台服务器设置连接上限有些偏高。临时表# 创建临时表show global status like ‘created_tmp%‘;

每次创建临时表,Created_tmp_tables增加,如果是在磁盘上创建临时表,Created_tmp_disk_tables也增加。Created_tmp_files:表示MySQL服务创建的临时文件文件数,比较理想的配置是:Created_tmp_disk_tables / Created_tmp_tables * 100% = 81%Open_tables / table_open_cache * 100% = 85% Open_tables / table_cache * 100% 50的话说明query_cache_size可能有点小,要不就是碎片太多。  查询缓存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%  示例服务器 查询缓存碎片率 = 100%,查询缓存利用率 = 15.9%,查询缓存命中率 = 0%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

文件打开数# 文件打开数show global status like ‘open_files‘;

# 查看 mysqld进程能够打开的操作系统文件描述符(fd)的最大数量show variables like ‘open_files_limit‘;

比较合适的设置:Open_files / open_files_limit * 100% show global status like ‘table_locks%‘;

Table_locks_immediate:表示立即释放表锁数,Table_locks_waited:表示需要等待的表锁数。如果Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎,因为InnoDB是行锁而MyISAM是表锁,对于高并发写入的应用InnoDB效果会好些。示例中的服务器Table_locks_immediate / Table_locks_waited = 235,MyISAM就足够了。表扫描情况# 表扫描情况show global status like ‘handler_read%‘;

# 服务器完成的查询请求show global status like ‘com_select‘;

计算表扫描率:  表扫描率 = Handler_read_rnd_next / Com_select  如果表扫描率超过4000,说明进行了太多表扫描,很有可能索引没有建好,增加read_buffer_size值会有一些好处,但最好不要超过8MB。上面服务器中表扫描率=20411

原文链接:https://www.cnblogs.com/LoveBB/p/17195702.html

•••展开全文