技巧💡
即通用日志,所有命令都会被记录。不建议生产环境开启
查询日志在MySQL中被称为general log(通用日志), 查询日志里的内容不要被”查询日志”误导, 认为里面只存储select语句, 其实不然, 查询日志里面记录了数据库执行的所有命令, 不管语句是否正确, 都会被记录, 具体原因如下:
- insert查询为了避免数据冲突, 如果此前插入过数据, 当前插入的数据如果跟主键或唯一键的数据重复那肯定会报错
- update时也会查询因为更新的时候很可能会更新某一块数据
- delete查询, 只删除符合条件的数据
因此都会产生日志, 在并发操作非常多的场景下, 查询信息会非常多, 那么如果都记录下来会导致IO非常大, 影响MySQL性能, 因此如果不是在调试环境下, 是不建议开启查询日志功能的.
查询日志的开启有助于帮助我们分析哪些语句执行密集, 执行密集的select语句对应的数据是否能够被缓存, 同时也可以帮助我们分析问题, 所以, 我们可以根据自己的实际情况来决定是否开启查询日志
参数
参数general_log用来控制开启, 关闭MySQL查询日志
参数general_log_file用来控制查询日志的位置
FILE : 表示日志存储在文件中
TABLE : 表示日志存储在mysql库中的general_log表中
FILE, TABLE : 表示将日志同时存储在文件和general_log表中, 改值会徒增很多IO压力, 一般不会这样设置
NONE : 表示不记录日志, 即使general_log设置为ON, 如果log_output设置为NONE, 也不会记录查询日志