Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我应该使用MySQL视图还是报表作业_Mysql_View_Cron - Fatal编程技术网

我应该使用MySQL视图还是报表作业

我应该使用MySQL视图还是报表作业,mysql,view,cron,Mysql,View,Cron,在我的工作中,我的同事们总是为沉重的桌子做报告。使用cronjob,我们从每个用户的1天中获取所有数据,并将总数插入报告表中。“报告概述”页面不正确,因为它最多延迟1小时 cronjob每天运行24次(每小时) 使用MySQL视图更好吗?当一条记录被添加到主表中时,MySQL视图将被更新,对吗?这是一个非常重要的行动。这会影响用户使用仪表板吗 亲切问候, Joost好的,首先介绍一些术语 cron作业最有可能将数据追加到现有表中(可能使用upsert方法,如INSERT…ON DUPLICATE

在我的工作中,我的同事们总是为沉重的桌子做报告。使用cronjob,我们从每个用户的1天中获取所有数据,并将总数插入报告表中。“报告概述”页面不正确,因为它最多延迟1小时

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

使用MySQL视图更好吗?当一条记录被添加到主表中时,MySQL视图将被更新,对吗?这是一个非常重要的行动。这会影响用户使用仪表板吗

亲切问候,


Joost

好的,首先介绍一些术语

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

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

现在,在由Cron作业填充的视图和表之间,您还可以安装一个名为Flexviews()的MySQL插件。FlexView允许MySQL使用所谓的物化视图(例如)。物化视图基本上是作为表持久化到磁盘的视图。而且,由于它们是表,因此也可以使用索引

物化视图不是MySQL所固有的,但是维护该插件的开发人员在MySQL社区中是众所周知的,他倾向于编写好的、可靠的SQL工具。显然,在生产环境中测试插件或不使用备份是错误的。但是有很多人在生产中使用FlexView来完成您看起来想要做的事情。。。以不影响DB性能的方式获得仪表板/摘要表的近实时更新

我一定会查FlexView的。。。你可以了解更多

在这里:


这里:

视图只是数据库中表的一个窗口。当访问视图时,数据库仍然必须根据视图检索结果。听起来数据库可能需要做很多工作,如果表很大,可能会影响性能。