我正在使用一个时间分析器来优化我的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
在该文件中,我需要配置以获取通用查询日志和慢查询日志。
我看到有一个很好的选项,如何启用日志慢查询和没有索引的查询:
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查看最慢的查询,但是我需要做什么才能单独查看那些没有索引的查询呢?
我执行了一个查询,删除了大约1800万条记录。执行此查询后,mysql停止响应查询。我重新启动了服务器,现在无法使用以下命令启动mysql服务:
service mysql start
也许它只是打印错误,但我找不到错误日志文件。我正在运行CentOS 6,并使用yum从它的官方存储库安装了mariaDB。
我应该怎么做才能启动mysql?我不在乎查询是否被取消了。我可以看到一些mysqld进程正在消耗CPU和I/O,我想它可能还在尝试执行这个查询。
我试着让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
我们有下表
id # primary key
device_id_fk
auth # there's an index on it
old_auth # there's an index on it
和下面的查询。
$select_user = $this->db->prepare("
SELECT device_id_fk
FROM wtb_device_auths AS dv
WHERE (dv.auth= :auth OR dv.old_auth= :auth)
LIMI
我喜欢触发器有一个原因-它们只是起作用。我讨厌触发器的一个原因--当它们不起作用时,忘记尝试调试。没有甜蜜的挫折感。
基本上,我希望看到运行的更新、删除、插入等查询。我想看看那个查询..。在我的终端或日志中的某个地方,MySQL执行它的具体方式和时间,可能还有任何相应的输出/错误。思想/黑客?
我正在尝试用几个联接来调试一个update查询什么的。我的查询要复杂得多,但为了简洁起见,下面是一个例子。
DELIMITER |
CREATE TRIGGER ireallyhateyourightnow AFTER UPDATE ON watch_this_table
FOR EACH ROW BE