gpt4 book ai didi

mysql - 我应该使用 MySQL View 还是报告 cronjob

转载 作者:行者123 更新时间:2023-11-29 12:35:22 24 4
gpt4 key购买 nike

在我的工作中,我的同事总是为重型表构建报告 cronjobs。通过 cronjob,我们获取每个用户 1 天的所有数据,并将总计插入报告表中。报告概览页面不正确,因为最多有 1 小时的延迟。

cronjob 每天运行 24 次(每小时)。

使用 MySQL View 更好吗?当一条记录添加到主表时,MySQL View 就会更新,对吧?这是一个非常深思熟虑的 Action 。这会影响使用仪表板的用户吗?

亲切的问候,

乔斯特

最佳答案

好的,首先介绍一些术语。

cron 作业很可能将数据附加到现有表中(可能使用像 INSERT ... ON DUPLICATE KEY UPDATE 这样的 upsert 方法)。您写入现有表的这些数据可能会被索引,就像普通的 MySQL 表一样,并且它们也持久在磁盘上

另一方面, View 实际上只不过是 MySQL 中保存的查询。每次打开 View 时,都会再次运行查询。 View 对于性能优化来说并不真正有用,因为它们对于小型、高效的查询很有用,否则这些查询可能会很难记住。 View 不能有索引(尽管它们是有效保存的查询,因此查询本身可以利用它引用的表上的索引),并且它们不会持久保存到磁盘上。每次加载 View 时,您都将再次运行构成 View 的查询

现在,在 Cron 作业填充的 View 和表之间,您还可以安装一个名为 Flexviews ( https://github.com/greenlion/swanhart-tools ) 的 MySQL 插件。 Flexviews 允许 MySQL 使用所谓的物化 View (例如 http://en.wikipedia.org/wiki/Materialized_view )。物化 View 基本上是作为表持久保存到磁盘的 View 。而且,由于它们是表,因此它们也可以使用索引。

物化 View 并不是 MySQL 原生的,但是维护该插件的开发人员在 MySQL 社区中是众所周知的,并且他倾向于编写优秀、可靠的 SQL 工具。显然,在生产环境中或不使用备份来测试插件将是错误的。但是有很多人在生产中使用 Flexviews 来完成您想要做的事情......以不会破坏数据库性能的方式获得仪表板/汇总表的近乎实时更新。

我肯定会检查 Flexviews...您可以了解更多信息

此处:http://www.percona.com/blog/2011/03/23/using-flexviews-part-one-introduction-to-materialized-views/

这里:http://www.percona.com/blog/2011/03/25/using-flexviews-part-two-change-data-capture/

关于mysql - 我应该使用 MySQL View 还是报告 cronjob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com