Oracle function-based index对于数据更新处理延时问题。
来源:互联网 发布:微信伪装地址软件 编辑:程序博客网 时间:2024/05/07 11:21
问题描述:根据tableA中Col2列数据对其他数据表进行更新,并且把Col2输具由0变成1。为了提高查询速度将数据表tableA中Col2使用了function-based index,现在使用嵌套游标来更新Col2的数据,并且为了提高执行速度使用两个程序来更新数据。偶尔会出现对其它数据表进行两次更新的情况,分析可能是由于多个程序调用的原因,使用了10个Server同时调用,结果出现问题的几率达到了25%。下面介绍一下具体的代码。
数据表tableA,数据结构如下:
Col1 Col2
Aa 0
Bb 1
Cc 1
步骤:
为了更好的提高查询速度针对Col2列建立了一个function based index,建立的方法如下。Col2列的数据只有1和0两种数据,而且主要是1。
Cur1主要是获取到需要处理的数据。
Cur2主要是获取每一条数据,由于多个程序的调用,所以Cur1中的过滤条件也加了进去,因为某一条数据在一个程序循环过程中可能被另外一个程序执行结束。FOR UPDATE SKIP LOCKED语句的作用是对于数据表更新操作的锁定。
原因分析:可能是function-based index的数据更新有延迟问题,一条已经处理结束的数据状态仍然没有变换为1,导致另外一个程序查询到这条数据然后又进行了一次更新。
解决方案:去掉function-based index。
不知道function-based index是否是这个问题的原因,请解决过类似问题的兄弟多多指点。非常感谢。
参考资料;
Creating a Function-Based Index
http://www.lc.leidenuniv.nl/awcourse/oracle/server.920/a96521/indexes.htm#2943
- Oracle function-based index对于数据更新处理延时问题。
- Function Based Index
- 关于函数索引(function-based index)
- ORACLE对于NCHAR数据的处理
- oracle index 大量数据插入效率问题
- oracle延时约束的问题
- maven 更新不了index问题
- 对于solr 在更新数据后在admin中查询发现未更新问题
- /*+ BYPASS_UJVC */ 处理数据更新时不能更新问题
- Oracle对于天数的处理
- 对于需要根据客户操作更新数据的情况的去重复处理
- undefined index 问题的处理
- 更新ORACLE数据时遇到锁死情况的处理
- 利用JDBC中处理批量更新oracle数据
- Oracle Index 的三个问题
- Oracle Index 的三个问题
- Oracle Index 的三个问题
- Oracle Index 的三个问题
- JBuilder中Run Project 主类和在工程中选择一个类右键用 Run using defaults 的区别
- 安全使用网银的简单办法
- Oracle9i查询器.用jdbc实现().用了swing..(面板一)
- 微软华人讲师谈软件生涯:功夫在身外
- JBuider 工程下各种文件说明
- Oracle function-based index对于数据更新处理延时问题。
- 采用Servlet 技术的背景(通用网关,进程和线程介绍)
- astyle_1.15.3的源码有BUG吗?
- Oracle9i查询器.用jdbc实现().用了swing..(主面板)
- Oracle9i查询器.用jdbc实现().用了swing..(调用面板)
- Servlet容器(Tomacat)介绍及配置
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分)
- 加快XP系统启动速度
- 通俗易懂Tomcat中Servlet的生命周期