从经常更新的 table 的长 sql 查询中,我应该期待哪个结果?
Which result should I expect from a long sql query from a table that is updated very often?
我确实有一个 table 的数据库,其中有超过 300mi 的条目。每分钟插入近 300 次,
很多时候我们需要得到统计数据。 (计数,求和)。
每个查询需要 10 到 30 秒才能完成。
从查询开始到查询结束,table数据增加了100多条。
我从统计查询中得到的数字与查询的开始或结束有关?
我正在使用 mysql 和 innodb
无论您的事务隔离级别如何(例如可重复读取或已提交读取),针对 InnoDB 表的任何单个 SQL 查询都会获得某种 "snapshot" 或数据库的一致视图。
SELECT
查询不会阻止并发插入或更新,但这些插入或更新不会影响 SELECT
查询的结果。它将 "see" 存在于 SQL 查询的 start 处的数据。
如果您使用可重复读取的事务隔离级别,事务中的所有查询,包括可能的几个 SELECT
查询(至少是非锁定查询),都会看到一致的数据快照,即使是并发的正在继续插入。
我确实有一个 table 的数据库,其中有超过 300mi 的条目。每分钟插入近 300 次,
很多时候我们需要得到统计数据。 (计数,求和)。 每个查询需要 10 到 30 秒才能完成。
从查询开始到查询结束,table数据增加了100多条。
我从统计查询中得到的数字与查询的开始或结束有关?
我正在使用 mysql 和 innodb
无论您的事务隔离级别如何(例如可重复读取或已提交读取),针对 InnoDB 表的任何单个 SQL 查询都会获得某种 "snapshot" 或数据库的一致视图。
SELECT
查询不会阻止并发插入或更新,但这些插入或更新不会影响 SELECT
查询的结果。它将 "see" 存在于 SQL 查询的 start 处的数据。
如果您使用可重复读取的事务隔离级别,事务中的所有查询,包括可能的几个 SELECT
查询(至少是非锁定查询),都会看到一致的数据快照,即使是并发的正在继续插入。