【问题标题】:Count(*) Timing Out on Large TableCount(*) 在大表上超时
【发布时间】:2020-06-28 10:19:56
【问题描述】:

为什么对主键的简单查询会在 MySQL 中约 100 万条记录的表上超时?

即从表名中选择 Count(*)

【问题讨论】:

    标签: mysql


    【解决方案1】:

    Innodb 表不存储表的计数。因此SELECT COUNT(*) ... 需要读取所有行。

    使用information_schema.tables可以找到粗略的估计。

    【讨论】:

    • 鉴于此。分析大型数据集的最佳方法是什么?基本上只是为了提升硬件资源?
    • “分析”过于宽泛。你具体需要什么?一个足够大的缓冲池以包含更多您正在使用的索引帮助。体面的 IO(低延迟速度)将有所帮助
    • 刚看了一下,磁盘上只有 300 IOPS,然后在使用命令 iostat -dx 1 监控实时 IOPS 时,您可以随时看到磁盘峰值 > 95%,即使是基本的事情正在做。看起来像一个简单的升级到更好的 IOPS 硬盘将解决这里的问题。
    猜你喜欢
    • 2021-08-29
    • 2012-02-17
    • 2021-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 2010-12-24
    • 2016-08-13
    相关资源
    最近更新 更多