代码之家  ›  专栏  ›  技术社区  ›  Daniel Santos

对于经常更新的表的长SQL查询,我应该期望得到哪个结果?

  •  0
  • Daniel Santos  · 技术社区  · 6 年前

    我有一个数据库,其中的表中有超过300mi的条目。每分钟大约有300个插页,

    我们经常需要得到统计数据。(计数,平均总和)。 每个查询需要10到30秒才能完成。

    从查询开始到结束,表数据增加了100多个条目。

    我从统计查询中得到的数字与查询的开始或结束有关?

    我用的是mysql和innodb

    1 回复  |  直到 6 年前
        1
  •  1
  •   Bill Karwin    6 年前

    无论您的事务隔离级别是什么(例如,可重复读取还是已提交读取),针对InnoDB表的任何单个SQL查询都会获得一种“快照”或数据库的一致视图。

    SELECT 查询不会阻止并发插入或更新,但这些插入或更新不会影响 选择 查询。它将“看到”在 开始 SQL查询的。

    如果使用可重复读取事务隔离级别,则事务中的所有查询,包括可能的多个查询 选择 查询(至少是非锁定查询)可以看到数据的一致快照,即使并发插入正在继续。