【问题标题】:Tables getting locked in MySQL database表被锁定在 MySQL 数据库中
【发布时间】:2018-12-10 15:46:34
【问题描述】:

我在 Python 中使用 mysql.connector 查询 MySQl 数据库。查询如下:-

SELECT item.*
FROM d_table INNER JOIN
     i_table AS i
     ON (d_table.item_tag = i.item_tag) 
WHERE id = 20 AND
      timestamp >= '2000-06-30 00:00:00' AND
      timestamp <= '2001-07-30 00:00:00'  
GROUP BY i.id 

这里的主要问题是表被锁定了,由于表每 0.2 秒被查询一次,有没有办法解锁表或创建一个临时表并返回上述查询的结果

【问题讨论】:

    标签: mysql sql locking mysql-python


    【解决方案1】:

    我认为最简单的方法是查看表格。所以你可以只选择视图。

    CREATE VIEW test_view AS
    SELECT item.*
    FROM d_table INNER JOIN
         i_table AS i
         ON (d_table.item_tag = i.item_tag) 
    WHERE id = 20 AND
          timestamp >= '2000-06-30 00:00:00' AND
          timestamp <= '2001-07-30 00:00:00'  
    GROUP BY i.id;  
    

    那么就:

    select * from test_view;
    

    【讨论】:

      【解决方案2】:

      这是一条评论 - 但评论部分的空间有限。

      这里的主要问题是表被锁定,因为表每 0.2 秒被查询一次

      你以错误的方式提出了错误的问题。

      查询的序列化是否会对性能产生影响?如果是这样,那么表锁定只是问题的一部分,另一个是运行查询所花费的时间。您没有提供任何信息来支持对性能问题的任何分析。虽然有避免锁定的方法,但这些方法可能会转化为其他性能问题。

      您没有提供表结构的详细信息,也没有提供数据分布的详细信息,也没有提供查询的解释计划。

      关于表锁定,如果不知道发生了什么样的锁定,就不可能提出任何有见地的建议。这些表的数据库引擎是什么?什么是事务隔离模型?工作量是多少?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-07
        • 1970-01-01
        • 2011-08-05
        相关资源
        最近更新 更多