分类: Oracle
2006-04-25 23:22:41
表空间的并发处理:
oracle之所以能支持TB级以上的数据,其中有一个非常重要是采用表空间管理。何谓表空间呢?表空间就是通常所说的存储区域,一个表空间可以包含多个数据文件,一个数据文件最大一般是(32G,不同的系统是不同的,FAT32是4G)所以当表空间满时,可以增大数据文件或增加数据文件。数据文件该怎么设置才是合理呢?1.尽可能每一个数据文件不要太大,因为Oracle一般情况下是并发性处理的,所以在写入时可以对多个数据文件进行写入,并发操作。2.表空间在建立不要写日志,因为这影响到系统的处理。3.每一个数据文件2G或者是4G的这样设置是最好的。例如下面的脚本创建表空间:
CREATE TABLESPACE "ORA"
NOLOGGING
DATAFILE 'FILEPATH\ORA1.ora' SIZE 2048M,
'FILEPATH\ORA2.ora' SIZE 2048M EXTENT MANAGEMENT
LOCAL UNIFORM SIZE 1024K SEGMENT SPACE MANAGEMENT AUTO
表空间一般情况不设为自己动增长,因为这样有好处也有坏处,好处:保证系统的处理效率,由于对于大的系统,例如数据仓库。坏处:万一数据量增大,这会出错。这就要求管理员时常监控着表空间的变化,如果到达某一程度应该采用增加数据文件。
Sql的并发处理:
下面是语句是oracle不用写日志,加快了处理时间
insert /*+append*/ into table_name select/values
下面语句是并行处理(5个并行,表内并行):
sql>alter session enable parallel dml;
sql> insert /*+parallel(table_name,5) */ into table_name select/values;
如果要update的目标表比较大(上千万),那么可么通过rownum分批update例如:
begin
while i
update /*+parallel(table_name,5) */ table_name set column_name=values where
commit;
i:=i+1;
start:=end+1;
end:=end+next;
end loop;
上面的update是5个并行(表内并行)n是表示要分多少批来处理,这和 where的condiction有密切联系。
2006-04-25 23:35 于北京通州