记录一个最近给生产环境做优化时,合理使用物化视图的案例。
本案例非常小,但是使用非常合理。希望对大家工作有用。
业务场景:
首先给大家介绍下业务场景:有一张库存表t_mm_stock,该表有一个列(status),记录着库存状态各种状态,如1表示入库,2表示出库,3,表示移库4,表示封存,5,表示冻结 ,6表示最终完结状态。
业务上经常需要查询等于2的状态记录,拿出该记录进行业务的后续处理。
数据状态:表中数据量非常大,上亿条记录。
处理方案:
建立物化视图。
--物化视图日志
create materialized view log on t_mm_stock with rowid
--物化视图查询重写
CREATE MATERIALIZED VIEW mv_stock
refresh on commit with rowid
ENABLE QUERY REWRITE
as
SELECT *
FROM t_mm_stock t1
WHERE t1.status = 2
总结:
真对该业务使用物化视图非常合理,如果我们创建bitmap索引,会产生锁。即便使用其他类型的索引,对于一个大表来说,查询性能
也是很有限。该业务中的状态会随着业务的改变表中状态也会改变。该物化视图就像过滤器,只把状态等于2的情况过滤出来,当
业务处理完(状态不等2),物化视图中的数据就会消失。
-----------------------------------------------------------------------------------------------------------------------
pxboracle@live.com
2014.5.22 14:20
share you knowledge with the world.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12798004/viewspace-1167494/ ,如需转载,请注明出处,否则将追究法律责任。