我应该使用MySQL视图还是报表作业
在我的工作中,我的同事们总是为沉重的桌子做报告。使用cronjob,我们从每个用户的1天中获取所有数据,并将总数插入报告表中。“报告概述”页面不正确,因为它最多延迟1小时 cronjob每天运行24次(每小时) 使用MySQL视图更好吗?当一条记录被添加到主表中时,MySQL视图将被更新,对吗?这是一个非常重要的行动。这会影响用户使用仪表板吗 亲切问候,我应该使用MySQL视图还是报表作业,mysql,view,cron,Mysql,View,Cron,在我的工作中,我的同事们总是为沉重的桌子做报告。使用cronjob,我们从每个用户的1天中获取所有数据,并将总数插入报告表中。“报告概述”页面不正确,因为它最多延迟1小时 cronjob每天运行24次(每小时) 使用MySQL视图更好吗?当一条记录被添加到主表中时,MySQL视图将被更新,对吗?这是一个非常重要的行动。这会影响用户使用仪表板吗 亲切问候, Joost好的,首先介绍一些术语 cron作业最有可能将数据追加到现有表中(可能使用upsert方法,如INSERT…ON DUPLICATE
Joost好的,首先介绍一些术语 cron作业最有可能将数据追加到现有表中(可能使用upsert方法,如INSERT…ON DUPLICATE KEY UPDATE)。您正在向现有表中写入的这些数据可能会被索引,就像普通的MySQL表一样,并且它们也会在磁盘上持久化 另一方面,视图实际上只是MySQL中保存的查询。每次打开视图时,都会再次运行查询。视图对于性能优化并没有真正的用处,因为它们对于小而高效的查询很有用,否则可能很难记住。视图不能有索引(尽管它们是有效保存的查询,因此查询本身可以利用它引用的表上的索引),并且它们不能持久保存到磁盘。每次加载视图时,都将再次运行构成视图的查询 现在,在由Cron作业填充的视图和表之间,您还可以安装一个名为Flexviews()的MySQL插件。FlexView允许MySQL使用所谓的物化视图(例如)。物化视图基本上是作为表持久化到磁盘的视图。而且,由于它们是表,因此也可以使用索引 物化视图不是MySQL所固有的,但是维护该插件的开发人员在MySQL社区中是众所周知的,他倾向于编写好的、可靠的SQL工具。显然,在生产环境中测试插件或不使用备份是错误的。但是有很多人在生产中使用FlexView来完成您看起来想要做的事情。。。以不影响DB性能的方式获得仪表板/摘要表的近实时更新 我一定会查FlexView的。。。你可以了解更多 在这里:
这里:视图只是数据库中表的一个窗口。当访问视图时,数据库仍然必须根据视图检索结果。听起来数据库可能需要做很多工作,如果表很大,可能会影响性能。