oracle并行处理的问题??? oracle支持并行处理,提供了如表级锁、行级锁等。1. 哪位能帮忙介绍下插入、查询及删除操作时,分别会用到哪些锁?2. 三个线程同时对一个表分别执行插入、查询及删除操作时,oracle是否会并行处理,还是要等一个操作完成后再进行另一个操作?非常感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.锁类型TM: DML or table lock(所有的插入,删除,更新都被称为DML操作;查询时不会产生锁)TX: transaction lock2.查询就无所谓了,不会有锁。除了查询,其他操作,ORACLE不会并行处理,只能等待其中一个操作完成后,再进行下一个操作。例:线程1对表A做插入操作的时候,并且还没有提交的时候,会同时产生TM和TX两种锁,其它线程不能对表A做DML操作;当线程A提交后,把表A的锁释放出来,其他的线程才可以依次对该表继续做DML操作。在这期间,任何其他线程执行查询是可以的。不会有锁 查询时,好像也会产生锁,是共享锁。删除,插入时,是排他锁。只要互相操作的不是同一个字段,oracle会并行处理,它具有多态性,不需等待~貌似是这样,你google一下~~ 通常的数据库中是有排它锁和共享锁的,排他锁在对数据库进行更新、插入或者删除时添加的,共享锁在选择时添加的。但是oracle的实现机制不太一样,只有排他锁,没有共享锁,而且这个共享锁是基于元组的,也就是只要线程不是对同一行进行DML,就是可以并行的,否则就需要等一个线程完成后才可以执行。另外,oracle执行查询语句时是查询未提交的语句。所以不用加锁,只要能判断出哪些是已提交的,哪些是未提交的即可。 用户进程根本不会直接操作到数据库本身。在select,update,delete ..等操作时,系统首先会去缓存区里找用到的信息,如果有直接作业,没有的话会把用到的信息从数据库里提取到缓存区。然后DBWn进程会不定时的把缓存区的信息提交到数据库。所以缓存区里既有已提交但还没来得及写入数据库的信息,也有已经回滚但数据库还没撤销的数据。总体来说,最终oracle会写入已提交的数据,回滚未提交的数据,保持数据一致性。 你可以看下oracle concepts 第四章 事务管理 和第14章 并发和一致性,就一目了然了,这么听别人讲估计你还是迷糊 redhat5 安装BIEE 请教高手,写一个查询语句?! ORACLE数据库开发经验总结 SQL查询语句遇到麻烦了,各位大侠高手帮帮忙呀!!!!!!! 如何在本机的Oracle控制台上操作远程的Oracle数据库实例 高手请教,我如何设置才能使用oracle作业在重新启动数据库后自动运行??? 哪里有sqlexpert3.2下载? 我在别的Server上导出的数据在另一台Server上恢复上的问题!帮忙啊! oracle连接问题 求助大神!!存储过程按系统时间插入数据 问个VB.net和oracle数据库相连的问题 SqlServer 自定义函数转换成Oracle(急,在线等)
TM: DML or table lock(所有的插入,删除,更新都被称为DML操作;查询时不会产生锁)
TX: transaction lock
2.查询就无所谓了,不会有锁。
除了查询,其他操作,ORACLE不会并行处理,只能等待其中一个操作完成后,再进行下一个操作。
例:线程1对表A做插入操作的时候,并且还没有提交的时候,会同时产生TM和TX两种锁,其它线程不能对表A做DML操作;当线程A提交后,把表A的锁释放出来,其他的线程才可以依次对该表继续做DML操作。在这期间,任何其他线程执行查询是可以的。不会有锁
删除,插入时,是排他锁。
只要互相操作的不是同一个字段,oracle会并行处理,它具有多态性,不需等待~
貌似是这样,你google一下~~
在select,update,delete ..等操作时,系统首先会去缓存区里找用到的信息,如果有直接作业,没有的话会把用到的信息从数据库里提取到缓存区。然后DBWn进程会不定时的把缓存区的信息提交到数据库。所以缓存区里既有已提交但还没来得及写入数据库的信息,也有已经回滚但数据库还没撤销的数据。总体来说,最终oracle会写入已提交的数据,回滚未提交的数据,保持数据一致性。