查看数据库操作频次
使用SHOW GLOBAL STATUS LIKE 'Com_______';
指令,能查看当前数据库的INSERT
、UPDATE
、DELETE
、SELECT
访问频次 。若以查询为主,需重点优化查询相关性能,如索引;若以增删改为主,可考虑事务处理、批量操作等方面的优化 。
为什么我用DateGrip 查询一次表,我的Com_select增加了9次?
Com_select
增加多次是因为 DataGrip 的 可视化操作背后隐藏了多条 SELECT
语句 ,用于获取数据、元信息或实现交互功能。这是客户端工具的正常行为,并非异常。如果需要精确控制 SELECT
次数,建议通过工具设置或手动编写 SQL 来减少不必要的查询。
慢查询日志
MySQL 的慢查询日志是一种用于记录数据库中执行时间较长的 SQL 语句的日志功能,是数据库性能优化的重要工具。
作用
- 定位性能瓶颈:通过记录执行时间超过设定阈值的 SQL 语句,帮助数据库管理员和开发人员找出那些消耗大量时间的查询,从而定位数据库性能瓶颈所在。
- SQL 优化依据:提供了 SQL 语句的实际执行性能数据,如执行时间、锁等待时间、扫描行数等,为优化 SQL 语句提供了真实可靠的依据。可以根据这些数据来调整查询条件、添加索引或者重写 SQL 逻辑 。
- 系统监控:长期监控慢查询日志,能观察数据库性能随时间的变化趋势,提前发现潜在的性能问题,以便及时调整系统配置或进行优化 。
- 索引优化:可设置记录未使用索引的查询,帮助发现数据库中可能存在的索引缺失或无效索引使用情况,进而针对性地优化索引 。
工作原理
- 启用与配置 :通过设置全局变量来开启和配置慢查询日志相关参数。
slow_query_log
:慢查询日志总开关,默认值为OFF
(关闭 ),设置为ON
或1
时启用慢查询日志 。slow_query_log_file
:用于指定慢查询日志文件的存储位置和名称,默认位于 MySQL 数据目录下,文件名一般为hostname - slow.log
。long_query_time
:定义慢查询的时间阈值,默认是10
秒,即 SQL 语句执行时间超过这个值就会被记录到慢查询日志中。从 MySQL 5.6 版本起,支持设置小于1
秒的小数,如0.1
秒,可根据实际需求调整 。
配置方式
- 配置文件设置(永久生效) :在 MySQL 配置文件(如 Linux 系统下的
my.cnf
或my.ini
)的[mysqld]
模块中添加或修改相关参数。例如:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log # 可按需指定日志文件路径
long_query_time = 1 # 慢查询阈值设为1秒,可调整