Oracle 的并行查询机制,用好了是真的能省不少事。比如用select /*+ FULL(emp) PARALLEL(emp,5) */
这种写法,指定并行度,跑大表的时候,速度那叫一个快。不过啊,像alter table_name parallel degree N
这种持久并行方式,我一般不太推荐,维护麻烦,还容易影响别的 SQL 执行计划。
并行度的设置其实挺讲究的,太高了会争资源,太低又没效果。建议你根据 CPU 核心数来定,一般并行度设个 2-4 就挺稳。
全表扫描配合并行,还挺有用的,是数据量大的批任务。别忘了在语句里加点 hint,比如FULL
和PARALLEL
组合使用,能直接提示优化器走并行。
哦对了,我整理了一些还不错的文章,像是Oracle SQL 并行查询笔记、排序合并连接与并行查询的实践,里面讲了不少实战经验,你可以去看看。
如果你最近在调 SQL 性能,尤其是跑得慢的大查询,不妨试试加点并行 hint,测试看看效果,别忘了对比执行计划,看看是不是走上了并行路径。