Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2208872
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Oracle

2012-04-23 18:18:15

并行技术(2)  http://blog.chinaunix.net/uid-23284114-id-3189199.html
并行技术(3)  http://blog.chinaunix.net/space.php?uid=23284114&do=blog&id=3190153


并行技术主要使用在OLAP中,也可以使用在OLTP或者混合系统中(hybrid systems)。
并行技术就是让多颗CPU干以前1颗CPU做的事情。


并行技术能够改善如下情况:
    1.查询时需要大表扫描、joins或者分区索引扫描
    2.创建大索引
    3.创建大表
    4.Bulk inserts, updates, merges, and deletes
    

使用并行技术最好有如下条件:
    1.对称多处理器
    2.足够的IO带宽
    3.空闲或者间歇使用的CPU(如cpu使用率长期低于30%)
    4.足够的内存(主要用来sorts, hashing, and I/O buffers)

如果你的系统缺少上面任何一个条件,那么并行技术并不能明显提高系统性能。

什么时候使用并行技术?
    数据仓库。在OLTP中,批量处理以及维护性操作同样可以使用并行技术,如创建索引。

什么时候不适合使用并行技术?
    1.短查询、短事务(the typical query or transaction is very short (a few seconds or less))
    2.CPU、内存或I/O资源没有空闲。

数据库哪些操作可以使用并行
    1.Access methods
        Some examples are table scans, index full scans, and partitioned index range scans.

    2.Join methods
        Some examples are nested loop, sort merge, hash, and star transformation.

    3.DDL statements
        Some examples are CREATE TABLE AS SELECT, CREATE INDEX, REBUILD INDEX, REBUILD INDEX PARTITION, and MOVE/SPLIT/COALESCE PARTITION.
        含有LOB字段的表无法使用DDL 并行技术(One important restriction is that parallel DDL cannot be used on tables with object or LOB columns.)
        
    4.DML statements
        Some examples are INSERT AS SELECT, updates, deletes, and MERGE operations.
    
    5.混合SQL操作:Miscellaneous SQL operations
        Some examples are GROUP BY, NOT IN, SELECT DISTINCT, UNION, UNION ALL, CUBE, and ROLLUP, as well as aggregate and table functions.

    6.Parallel query
        如select,    DDL或者DML操作含有select语句的情况

    7.SQL*Loader,这个应当重视。用于数据多的导入,如
        sqlldr USERID=SCOTT/TIGER CONTROL=LOAD1.CTL DIRECT=TRUE PARALLEL=TRUE


并行如何工作?How Parallel Execution Works
    并行技术把一个SQL任务(task)分成多个小单元,每一个小单元被分开处理。同样,incoming data (tables, indexes, partitions)也被分成多个微粒(granules)。

    并行度: Degree of Parallelism
        并行技术协调2个或者多个并行执行服务(parallel execution servers)去处理一条SQL。并行执行服务(parallel execution servers)的数据量就称为"并行度"(degree of parallelism)。
        
        使用多CPU和磁盘来快速响应查询(queries)是并行技术的目的。但是,多个用户同时执行并行操作,CPU、内存及磁盘等资源会被快速耗尽。

    
    并行执行服务池:The Parallel Execution Server Pool
        实例启动,oracle创建一个并行执行服务池(The Parallel Execution Server Pool),这个池专门为并行操作服务。初始化参数 PARALLEL_MIN_SERVERS 决定了实例启动时,创
        建并行执行服务(parallel execution servers)的个数。

        查询当前parameter parallel_min_servers参数
        SQL> show parameter parallel_min_servers

                执行一个并行操作时,并行执行协调器(parallel execution coordinator)从并行执行服务池(The Parallel Execution Server Pool)获得并行执行服务器(parallel execution  servers),然后分配parallel execution servers去处理并行操作。如果需要,oracle会创建额外的并行执行服务(parallel execution servers),然后去处理并行操作。处理完毕    并行操作后,协调器把执行得到的数据结果返回给用户进程,然后把并行执行服务(parallel execution servers)还给并行执行服务池(The Parallel Execution Server Pool)。

        执行一条SQL,优化器决定是否执行并行操作以及并行度(the degree of parallelism (DOP))是多少。并行度(DOP)决定从并行服务池(The Parallel Execution Server Pool)中获得的并行服务器个数,如果池中的并行服务器不够,那么协调器会创建新的并行执行服务器。

        注意:
        1.并行执行协调器(parallel execution coordinator)和并行执行服务(the parallel execution servers)在一个时间段只能服务一个任务。一个并行执行协调器(the parallel execution servers)不能并行服务两个任务,比如一个协调器不能同时服务一个并写查询和一个并行DML操作。
        2.在SQL语句解析阶段协调器不会去调用并行执行服务器,只有在SQL语句的执行阶段才会去调用。

并行技术(2)  http://blog.chinaunix.net/uid-23284114-id-3189199.html
并行技术(3)  http://blog.chinaunix.net/space.php?uid=23284114&do=blog&id=3190153
阅读(2561) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~