2

我见过很多慢查询日志,但从来没有这样的:

    /usr/sbin/mysqld, Version: 5.1.46-log (SUSE MySQL RPM). started with:
    Tcp port: 3306  Unix socket: /var/run/mysql/mysql.sock
    Time                 Id Command    Argument
    # Time: 160627  9:10:05
    # User@Host: sysop[sysop] @  [127.0.0.1]
    # Query_time: 3.768728  Lock_time: 0.034402 Rows_sent: 734  Rows_examined: 734
    use asterisk;
    SET timestamp=1467033005;
    select PostID, lead_id, list_id from vdlist_temp where Posted is null;
    # Time: 160627 10:35:11
    # User@Host: sysop[sysop] @  [192.168.0.248]
    # Query_time: 35.563521  Lock_time: 0.000054 Rows_sent: 1222017  Rows_examined: 2444034
    SET timestamp=1467038111;
    SELECT `vicidial_list`.`lead_id`, `vicidial_list`.`source_id` FROM  `vicidial_list` ORDER BY `vicidial_list`.`source_id`;
    # User@Host: sysop[sysop] @  [127.0.0.1]
    # Query_time: 0.000095  Lock_time: 18446744073699.406250 Rows_sent: 2  Rows_examined: 1
    SET timestamp=1467038111;
    call spUpdate_VDList_from_temp(0, 0, 1324903);
    # Time: 160627 10:35:12
    # User@Host: sysop[sysop] @  [127.0.0.1]
    # Query_time: 0.000055  Lock_time: 18446744073699.359375 Rows_sent: 0  Rows_examined: 0
    SET timestamp=1467038112;
    call spMoveXDrop(10376163);
    # Time: 160627 11:26:14
    # User@Host: sysop[sysop] @  [127.0.0.1]
    # Query_time: 0.000057  Lock_time: 18446744073697.218750 Rows_sent: 3  Rows_examined: 0
    SET timestamp=1467041174;
    call spUpdate_VDList_from_temp(10795520, 616062301, 1955758);

这似乎表明我有查询等待超过 500,000 年的锁。(我写了存储过程,我还没有那么老!)不知何故我认为这是不对的。这些都是 MyISAM 表。(不是我的选择。)我做了一个 mysqldump 并恢复了数据库,重新启动了服务器,但我仍然看到这样的锁定时间。

谁能给我一个线索在哪里寻找问题?(服务器时间都很好。)

编辑:这个 MySql 版本:5.1.46-log 附带一个开源项目 Vicidial。很明显 Lock_time 是一个错误。问题是我正在查看慢查询日志以追踪用户对 Web 服务器响应慢的投诉。我希望有人会知道是什么触发了这个错误,以帮助我找到实际问题。正如您从日志中看到的,大多数慢查询都有正常的 Lock_times。存储过程和 PHP 生成的查询都会生成疯狂的 Lock_time。我看到的唯一共同点是它们都从表 vicidial_list 中选择或更新。我转储、删除并重新创建了该表,但无济于事。

4

2 回答 2

1

有时时钟似乎倒转。十多年来,这一直是个问题。它似乎是无害的。忽略它作为虚假值。

请注意,如果 a-1存储在 a 中BIGINT UNSIGNED,您将获得与您看到的非常相似的值18446744073699.406250

于 2016-07-04T00:36:17.510 回答
0

这些查询不是库存 VICIdial 的一部分,因此我可能会建议对您尝试运行的那些自定义查询进行一些查询优化。此外,在我们的 VICIbox ISO 安装程序的更新版本中,我们使用的是 MariaDB,还有一个更新的版本,与您使用的旧版本的 MySQL 相比,它有很多错误修复和优化。

于 2016-12-16T02:38:44.680 回答