ALTER SESSION FORCE PARALLEL QUERY;
SELECT /*+ parallel(c1 ,10) */ COUNT(*),a1  FROM temp_t c1 group by a1;在生产环境中,假如有一个表 temp_t  这个表有5000万---1个亿的数据,对这个表有实时的增删改查操作,我想按照某一个字段a1进行分组统计数量,因为数据量很大,统计起来很慢很慢,所以想进行强制并行查询(假设服务器cpu数量满足10个以上),我想问下这样在生产环境中进行强制并行查询会对数据库有什么不良的影响没有??我知道这样查的很快,充分利用了多个cpu,但是不知道有什么副作用没有? 请大侠解解小弟疑惑,谢谢(网上很多文章都是只介绍了优点)

解决方案 »

  1.   

    1、并行占用较多cpu资源,使用需要考虑cpu资源是否充裕及执行时间是否会太长
    2、并行度的设置需要根据数据库服务器的cpu情况来设置,如果执行时间会较长,切勿设置过大并行度,影响系统
    --检查数据库服务器cpu情况
      show parameter cpu_count 
    3、执行过程中监控好系统负载情况
      

  2.   

    根据查询具备的运算特点来决定是否使用并行.
    不是所有操作都能从启用并行特性获得益处的,相反,可能会因为上下文切换和闩锁争用而导致性能恶化.另外对于排序等不仅仅消耗cpu资源,还需要充足的内存资源进行的操作,如果启用过高并行度,可能反而会增加磁盘排序的需求并导致性能恶化.