我正在使用一个时间分析器来优化我的python脚本。事实证明,mysql查询在我的python脚本中占用了大量时间。总共只有19个查询。据cProfile报道,这19个mysql查询耗时超过7.44秒。
下面是完整的脚本代码,其中mysql查询和相应的查询时间以秒为单位。
$ python -m cProfile -s time myscript.py
MYSQL Queries
SELECT column FROM table WHERE foreign_key = 1 AND somecolumn='val1'
0.378623008728
SELECT column F
操作系统为ubuntu 16.04
MySQL版本:MySQL Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper
在我的系统中
/etc/mysql/ -> ls
conf.d debian.cnf debian-启动my.cnf my.cnf.fallback mysql.cnf mysql.conf.d
在该文件中,我需要配置以获取通用查询日志和慢查询日志。
我试着让general_log表在MySQL 5.7.29中工作,我运行了下面的代码,它执行得很好,但是在执行更多的select语句后,general_log表中没有任何行-例如,它看起来实际上没有记录任何东西。任何帮助都是非常感谢的!
use mysql;
SET GLOBAL general_log = 'OFF';
DROP TABLE general_log;
CREATE TABLE IF NOT EXISTS `general_log` (
`event_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP O
我看到有一个很好的选项,如何启用日志慢查询和没有索引的查询:
SET GLOBAL log_queries_not_using_indexes=1;
SET GLOBAL log_slow_queries=1;
好的,好的,但是它们似乎都写入了我在my.cnf配置文件中指定的同一个日志文件:
[mysqld]
long_query_time = 1
log-slow-queries = /var/log/mysql/mysql-slow.log
我使用mysqldumpslow查看最慢的查询,但是我需要做什么才能单独查看那些没有索引的查询呢?
我注意到最近mysql客户端工具并没有记录我发布的所有查询。这种行为似乎非常不一致;有些查询是记录的,而另一些查询则没有,没有任何明确的模式,尽管查询越简单,记录的可能性就越大。至少可以说,这是令人讨厌的。我在Ubuntu12.04LTS下使用MySQL 5.6.14。
实际上似乎没有太多的模式:像SELECT COUNT(*) FROM TABLE_X WHERE COL_1=3;这样的查询很可能会被记录,而SELECT COL_1,COUNT(COL_1) FROM TABLE_X GROUP BY COL_1则不会被记录。
有什么想法吗?这是MySQL的最新版本,我只在开发中使用它,但我