MySQL上用上了物化视图,你确认吗? 不信你们自己看。

在“MySQL”上建立物化视图
这个的“MySQL” 物化视图,还可以定时进行refresh,
CREATE MATERIALIZED VIEW user_view
REFRESH COMPLETE
ON DEMAND
START WITH now() NEXT now() + INTERVAL 10 second
AS
SELECT
u.username,
COUNT(o.order_id) AS total_orders,
SUM(p.price * o.quantity) AS total_spent
FROM
users u
LEFT JOIN
orders o ON u.user_id = o.user_id
LEFT JOIN
products p ON o.product_id = p.product_id
GROUP BY
u.user_id
ORDER BY
total_spent DESC
LIMIT 10;
语句建立的方式如上,创建一个物化视图,且是异步刷新,刷新的频率是10秒刷新一次。
创建的物化视图可以查询吗,当然可以查询......

查询物化视图的结果
通过MySQL的view_materialized_info 视图就可以查询到

创建物化视图

通过语句查看定时进行刷新的mysql view

8.018
写到这里有人会问,到底这是哪个MySQL版本是什么,上图显示 8.018的MySQL就有这个功能。
懵了吧,咣咣的!!!
实际上这个并不是我们开源的MySQL,而是我们使用的PolarDB for MySQL,在这个版本中已经提供了MySQL的物化视图功能,通过物化视图功能,可以直接在“mysql”上完成这个功能。

这是PolarDB FOR MYSQL在提供了IMCI功能后,他们又做出的一个新功能,MySQL物化视图。
当前这个功能比较新,目前还只能进行定时的更新或手动的更新,手动的更新的方法 PostgreSQL 比较熟悉的可能一看就明白,这不是PG的物化视图的功能给弄到 MySQL上了。
其实我也有这个看法,那么这个功能目前适合什么情况。
1 有周,月度,年度的大报表,就的在MySQL上运行的,你可以用这个功能来定时运行大SQL来把这个报表跑出来,比如在晚上,然后白天来查。
2 比如有一些复杂的非实时的需求的表,比如宽表等,也可以用这个来分担PolarDB for MySQL的数据大报表的查询压力。
和研发的同学碰了一下,明年3月份,将实现完全实时的物化视图,也就是增量实时同步,那么届时PolarDB for MySQL 距离一个可以实现报表完美解决方案的MySQL 数据库产品,又进了一步,之前的IMCI 也将被利用,如果客户需要,数据连写节点都不会使用,而是直接利用IMCI节点来完成数据的写。
好吧越来越有意思了,MySQL有了物化视图,这还是那个“单纯的” MySQL????
本文分享自 AustinDatabases 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!