【问题标题】:Statistical data like display in website from large record set统计数据,如来自大型记录集的网站显示
【发布时间】:2014-06-06 03:05:33
【问题描述】:

我有 4 个数据库,其中的表包含大量数据。我的要求是在鼠标悬停在 UI 中的相应 div 时显示这些表中所有记录的计数(这是一个 asp.net 网站)。请注意,计数可能每分钟或每小时发生变化。 (意味着可以[使用另一个应用程序]从表中添加或删除新记录)。现在的问题是,获取计数需要花费大量时间(因为它有很多数据)。所以每次鼠标悬停,它都会调用相应的数据库并进行计数。有没有更好的方法来实现这一点?

我正在考虑实现如下所示。

http://www.worldometers.info/world-population/

但是要在每一秒内更改这样的数字,我需要调用数据库。正确的? (获取最新计数)有没有更好的方法来显示此类统计数据?

顺便说一句,我正在使用 MySQL。

谢谢

【问题讨论】:

    标签: mysql web statistics


    【解决方案1】:

    您需要提供更多详细信息 - 您使用的表引擎、计数查询的外观等。

    但是假设您使用的是 InnoDB,并且您正在尝试运行 count(*) 或 count(primary_id_column),您必须记住 InnoDB 具有集群主键,它们与行本身的数据页一起存储,而不是在单独的索引页,因此计数将对行进行全面扫描。

    您可以尝试的一件事是在任何唯一列(如行的 id 等)上创建额外的、单独的、非主索引,并确保(使用解释查询语句)您的计数使用此索引。

    如果这对您不起作用,我建议创建单独的表(例如使用列:table_name、row_count)以在其中存储计数器并在插入和删除其他表时创建触发器(您需要计算记录in) 来增加或减少这些值。根据我的经验(我们以每天和每小时的方式监控记录数量,在具有数亿条记录和繁重写入负载的表上:~150 次插入/秒)这是我迄今为止提出的最佳解决方案。

    【讨论】:

    • 感谢回复..触发器我也考虑过..但是会影响数据库性能..rt?
    • 会,但简单的递增/递减不应该引起注意。您有多少次插入/更新?
    • 插入和更新正在从另一个应用程序进行。它如此频繁..每分钟。
    • 我不知道你有什么硬件,但每分钟插入/更新的频率并不高。正如我所写的,我们每秒大约有 150 次插入(设备跟踪系统),并且触发器工作得很好。如果您想快速了解有关行数的信息,带有计数器的单独表格将是最佳解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2011-08-23
    • 1970-01-01
    • 2018-09-24
    相关资源
    最近更新 更多