mysql - 对于经常更新的表的长 SQL 查询,我应该期望得到什么结果?

标签 mysql innodb

我确实有一个数据库,其中的表包含超过 300mi 的条目。每分钟有近 300 个插入,

很多时候我们需要获取统计数据。 (计数、平均值)。 每个查询需要 10 到 30 秒才能完成。

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

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

我正在使用 mysql 和 innodb

最佳答案

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

SELECT 查询不会阻止并发插入或更新,但这些插入或更新不会影响 SELECT 查询的结果。它将“查看”SQL 查询开始时存在的数据。

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

关于mysql - 对于经常更新的表的长 SQL 查询,我应该期望得到什么结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52396320/

相关文章:

php - Laravel Eloquent 关系错误 - 调用未定义的关系

PHP处理数据并创建数组

php - 通过 PHP 检测 MySQL InnoDB

php - 搜索 mySQL 数据库

python - 为什么我的数据库不能在此 Python/Django 应用程序中运行?

mysql - Innodb 不允许我更新复合主键?

php - mysqli_rollback($ conn)不起作用

mysql - 从 myisam 转换为 innodb

mysql - 无法进一步优化 MySQL 查询 : what am I missing?

php - LOAD DATA INFILE + 进度跟踪