暂无图片
Oracle的并行DML?
我来答
分享
语菲
2023-01-28
Oracle的并行DML?

Oracle的并行DML?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新

Oracle文档将并行DML(PDML)一词的范围限制为只包括INSERT、UPDATE、DELETE和MERGE(不像平常的DML那样还包括SELECT)。在PDML期间,Oracle可以使用多个并行执行服务器来执行INSERT、UPDATE、DELETE或MERGE,而不是只利用一个串行进程。在一个有充足I/O带宽的多CPU主机上,对于大规模的DML操作,可能会得到很大的速度提升。

不过,不能把PDML当成提高OLTP应用速度的一个特性。并行操作设计为要充分、完全地利用一台机器上的所有资源。通过这种设计,一个用户可以完全使用机器上的所有磁盘、CPU和内存。在某些数据仓库中(有大量数据,而用户很少),这可能正是想要的;而在一个OLTP系统中(大量用户都在做很短、很快的事务),可能就不希望如此了,你不会让一个用户占用整个机器所有资源。

这听上去好像有些矛盾:我们使用并行查询是为了扩展,它怎么可能是不可扩展的呢?不过要知道,应用到一个OLTP系统时,这种说法确实很正确。并行查询不能随着并发用户数的增加而扩展。并行查询的设计目的是允许一个会话被拆分为100个并发会话去工作。但在OLTP系统中,我们肯定不希望把一个小的事务拆分为100个会话。

PDML在大型数据仓库环境中很有用,它有利于大量数据的批量更新。类似于Oracle执行的分布式查询,PDML操作采用同样的方式执行,即每个并行执行服务器相当于一个单独数据库实例中的一个进程。表的每一部分(每一片)由一个单独的线程利用其自己的独立事务来修改(相应地这个线程可能有自己的undo段)。这些事务都结束后,会执行一个相当于快速两阶段事务(2-Phase Commit,2PC)的过程来提交这些单独的独立事务。

暂无图片 评论
暂无图片 有用 9
打赏 0
暂无图片
回答交流
Markdown


请输入正文
提交