问题描述
嗨,汤姆,
我们的架构中有以下表格。
版本 (版本bojid编号,
itemobjid编号,
版本详细信息varchar2(100));
视图 (viewobjid编号,
viewdetail varchar2(100));
VERSIONINVIEW(versionobjid编号,-引用版本。versionobjid
viewobjid编号); -参考视图。viewobjid
我们有一个使用这些表的ODBC应用程序。
版本和VERSIONINVIEW表都有数百万条记录。所以,这两个表之间的任何连接操作都是非常昂贵的。在这两个表之间连接的简单选择需要几秒钟 (通常为2-12) 才能完成 (由于它们的行数)。因此,我们创建了以下实体化视图,以提高应用程序性能并使查询更快。
在使用rowid的版本上创建物化视图日志;
使用rowid在VERSIONINVIEW上创建物化视图日志;
创建物化视图版本 _ 大众构建提交时快速刷新为
选择v.rowid为v_rowid,viv.rowid为viv_rowid,v.versionobjid,hv.itemobjid,viv.viewobjid从版本v,VERSIONINVIEW viv其中v.versionobjid = viv.versionobjid;
这帮助我们非常有效地运行所有SELECT查询。
但问题是 ....
每当我们从版本表中删除一行并通过ODBC应用程序提交事务时,提交实际上就会挂起。它确实完成了,但是需要很多时间。知道此设置出了什么问题吗?
我们已经通过了其他线程,并且已经尝试了以下操作。但是,他们没有帮助。选择非常快,但是在DML之后提交需要相当长的时间。
1.将 _ mv_refresh_use_stats设置为FALSE
2.在架构上收集统计信息
3.锁定MV日志的统计信息
注意: 如果我们删除实体化视图,则删除不会在任何时间内发生,但是当然会击中SELECT性能。
请帮忙。
提前谢谢。
~ 马利克。
我们的架构中有以下表格。
版本 (版本bojid编号,
itemobjid编号,
版本详细信息varchar2(100));
视图 (viewobjid编号,
viewdetail varchar2(100));
VERSIONINVIEW(versionobjid编号,-引用版本。versionobjid
viewobjid编号); -参考视图。viewobjid
我们有一个使用这些表的ODBC应用程序。
版本和VERSIONINVIEW表都有数百万条记录。所以,这两个表之间的任何连接操作都是非常昂贵的。在这两个表之间连接的简单选择需要几秒钟 (通常为2-12) 才能完成 (由于它们的行数)。因此,我们创建了以下实体化视图,以提高应用程序性能并使查询更快。
在使用rowid的版本上创建物化视图日志;
使用rowid在VERSIONINVIEW上创建物化视图日志;
创建物化视图版本 _ 大众构建提交时快速刷新为
选择v.rowid为v_rowid,viv.rowid为viv_rowid,v.versionobjid,hv.itemobjid,viv.viewobjid从版本v,VERSIONINVIEW viv其中v.versionobjid = viv.versionobjid;
这帮助我们非常有效地运行所有SELECT查询。
但问题是 ....
每当我们从版本表中删除一行并通过ODBC应用程序提交事务时,提交实际上就会挂起。它确实完成了,但是需要很多时间。知道此设置出了什么问题吗?
我们已经通过了其他线程,并且已经尝试了以下操作。但是,他们没有帮助。选择非常快,但是在DML之后提交需要相当长的时间。
1.将 _ mv_refresh_use_stats设置为FALSE
2.在架构上收集统计信息
3.锁定MV日志的统计信息
注意: 如果我们删除实体化视图,则删除不会在任何时间内发生,但是当然会击中SELECT性能。
请帮忙。
提前谢谢。
~ 马利克。
专家解答
最好的调查方式是跟踪
-dbms_monitor.session_trace_enable (等待 =>true,绑定 =>true);
-从版本中删除...
-提交;
-dbms_monitor.session_trace_disable;
然后看一下tkprof格式的跟踪文件-它将揭示发生速度下降的地方。
您 * 是否 * 在表上定义了主键?或者给我们每个对象的 * full * DDL,我们将尝试在此处重新创建。
-dbms_monitor.session_trace_enable (等待 =>true,绑定 =>true);
-从版本中删除...
-提交;
-dbms_monitor.session_trace_disable;
然后看一下tkprof格式的跟踪文件-它将揭示发生速度下降的地方。
您 * 是否 * 在表上定义了主键?或者给我们每个对象的 * full * DDL,我们将尝试在此处重新创建。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1450次阅读
2025-03-13 11:40:53
Oracle RAC ASM 磁盘组满了,无法扩容怎么在线处理?
Lucifer三思而后行
878次阅读
2025-03-17 11:33:53
RAC 19C 删除+新增节点
gh
539次阅读
2025-03-14 15:44:18
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
496次阅读
2025-03-13 14:38:19
Oracle 如何修改 db_unique_name?强迫症福音!
Lucifer三思而后行
425次阅读
2025-03-12 21:27:56
Oracle DataGuard高可用性解决方案详解
孙莹
366次阅读
2025-03-26 23:27:33
墨天轮个人数说知识点合集
JiekeXu
312次阅读
2025-04-01 15:56:03
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
279次阅读
2025-04-08 09:12:48
风口浪尖!诚通证券扩容采购Oracle 793万...
Roger的数据库专栏
266次阅读
2025-03-24 09:42:53
切换Oracle归档路径后,不能正常删除原归档路径上的归档文件
dbaking
264次阅读
2025-03-19 14:41:51