_partition_large_extents和_index_partition_large_extents

alter system set "_partition_large_extents"=false;

alter system set "_index_partition_large_extents"=false;

参考:

http://www.xifenfei.com/2013/08/%E5%88%86%E5%8C%BA%E9%BB%98%E8%AE%A4segment%E5%A4%A7%E5%B0%8F%E5%8F%98%E5%8C%9664k-8m.html

从11.2.0.2开始创建分区表,每个分区默认大小为8M,是由_partition_large_extents参数控制,可以算是11.2.0.2开始的一个新特性,为了减少extent数量,提高分区表性能,而引入的一个参数,默认为true,即分区表的每个extent为8M,这里对于_partition_large_extents为true和false的情况进行了测试。

例1:

数据库参数情况如下:

SQL> select * from v$version;

BANNER

--------------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

PL/SQL Release 11.2.0.4.0 - Production

CORE 11.2.0.4.0 Production

TNS for Linux: Version 11.2.0.4.0 - Production

NLSRTL Version 11.2.0.4.0 - Production

SQL> alter system set "_partition_large_extents"=true;

System altered

SQL> alter system set "_index_partition_large_extents"=true;

System altered

SQL> show parameter _partition_large_extents

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

_index_partition_large_extents       string      TRUE

_partition_large_extents             string      TRUE

SQL> show parameter deferred_segment_creation--是否启用延迟段

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

deferred_segment_creation            boolean     FALSE

1)创建分区表:

CREATE TABLE Table1001

(

idd   INT,

iNAME VARCHAR(10),

grade INT

)

PARTITIONBYRANGE(grade)

(

PARTITION  part1 VALUESLESSTHAN(10)TABLESPACEtest,

PARTITION  part2 VALUESLESSTHAN(MAXVALUE)TABLESPACEtest

);

2)穿件普通表

CREATETABLE table1002

(

idd   INT,

iNAME VARCHAR(10),

grade INT

)TABLESPACETEST;

3)创建索引

createindex ind1 on table1001(idd)local tablespacetest;

createindex ind2 on table1002(idd) tablespace test;

createindex ind3 on table1001(iname) tablespace test;

createindex ind4 on table1002(iname) tablespace test;

查询segment视图,确定初始创建表所占空间大小:

select t.segment_name,

t.partition_name,

t.tablespace_name,

t.bytes /1024/1024||'m',

t.blocks,

t.extents

from dba_segments t

where t.tablespace_name ='TEST';

SEGMENT_NAME      PARTITION_NAME        TABLESPACE_NAME     T.BYTES/1024/1024||'M'         BLOCKS    EXTENTS

-------------------------------------------------------------------------------- -----------------------------

IND1 PART2 TEST 8m 1024 1

IND1 PART1 TEST 8m 1024 1

IND2 TEST               0.0625m 8 1

IND3 TEST               0.0625m 8 1

IND4 TEST               0.0625m 8 1

TABLE1001 PART2 TEST 8m 1024 1

TABLE1001 PART1 TEST 8m 1024 1

TABLE1002 TEST               0.0625m 8 1

结论:从例1可以得出结论,在11.2.0.4版本中,当参数_partition_large_extents等于true时(此时可能不可见),创建分区表默认占用空间大小为每个分区8m,而普通表默认占据空间大小仅0.0625m(64k)。而当_index_partition_large_extents为true时,创建分区索引时,默认分区大小为8m,而创建普通索引默认大小为64k。

例2:

SQL> alter system set "_partition_large_extents"=false;

System altered

SQL> alter system set "_index_partition_large_extents"=false;

System altered

SQL> show parameter _partition_large_extents

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

_index_partition_large_extents       string      FALSE

_partition_large_extents             string      FALSE

SQL> show parameter deferred_segment_creation

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

deferred_segment_creation            boolean     FALSE

创建分区表:

CREATETABLE Table1001

(

idd   INT,

iNAME VARCHAR(10),

grade INT

)

PARTITIONBYRANGE(grade)

(

PARTITION  part1 VALUESLESSTHAN(10)TABLESPACEtest,

PARTITION  part2 VALUESLESSTHAN(MAXVALUE)TABLESPACEtest

);

创建普通表:

CREATETABLE table1002

(

idd   INT,

iNAME VARCHAR(10),

grade INT

)TABLESPACETEST;

创建索引:

createindex ind1 on table1001(idd)localtablespacetest;

createindex ind2 on table1002(idd)tablespacetest;

createindex ind3 on table1001(iname)tablespacetest;

createindex ind4 on table1002(iname)tablespacetest;

查询segment视图,确定初始创建表所占空间大小:

select t.segment_name,

t.partition_name,

t.tablespace_name,

t.bytes /1024/1024||'m',

t.blocks,

t.extents

from dba_segments t

where t.tablespace_name ='TEST';

SEGMENT_NAME      PARTITION_NAME        TABLESPACE_NAME     T.BYTES/1024/1024||'M'         BLOCKS    EXTENTS

-------------------------------------------------------------------------------- -----------------------------

IND1 PART2 TEST               0.0625m 1024 1

IND1 PART1 TEST               0.0625m 1024 1

IND2 TEST               0.0625m 8 1

IND3 TEST               0.0625m 8 1

IND4 TEST               0.0625m 8 1

TABLE1001 PART2 TEST               0.0625m 1024 1

TABLE1001 PART1 TEST               0.0625m 1024 1

TABLE1002 TEST               0.0625m 8 1

结论:通过测试证明,设置_partition_large_extents参数确实是能够控制分区表的extent大小,而且对于分区表,deferred_segment_creation虽然为true,但是在一个分区表中如果有一个子分区插入了记录,那么其他子分区会同时创建segment.对于数据量不多,而且数据大量集中在某几个分区,那强烈建议设置_partition_large_extents为false,节约空间.如果数据量较大,而且数据分布较为均匀,建议设置_partition_large_extents为true.另外对于分区的index也有同样意义的参数为_index_partition_large_extents。

可以看到在11.2.0.2 以后_partition_large_extents参数默认打开(default : TRUE),创建的初始化分区大小为8M。

实际该特性可能在导致以下2个问题:

若配合deferred_segment_creation=false使用则创建具有大量分区的表时,耗时大幅增长

若配合deferred_segment_creation=false使用则建好后空表的所占空间为8M*分区数目,对比关闭该特性的情况会大非常多

转载于:https://www.cnblogs.com/wcwen1990/p/6656545.html

 

Oracle 分区默认segment大小变化(64k—>8M)的更多相关文章

  1. 分区默认segment大小变化(64k—>8M)

    _partition_large_extents和_index_partition_large_extents 参考: http://www.xifenfei.com/2013/08/%E5%88%8 ...

  2. 分区默认segment大小变化(64k—>8M)

    _partition_large_extents和_index_partition_large_extents 参考: http://www.xifenfei.com/2013/08/%E5%88%8 ...

  3. Oracle体系结构之Oracle分区

    目录 Oracle分区 0 一.Oracle分区理论知识 1 二.分区表的实现方式 1 1.范围分区(range partition table) 1 2.列表分区(list partitioning ...

  4. [转载]Oracle修改表空间大小

    Oracle修改表空间大小 使用Oracle10g建立数据库后,向数据库中导入了部分数据,第二天继续向数据库中导入数据表时发生错误: 查了很多资料发现原来是Oracle表空间限制,导致无法继续导入数据 ...

  5. delphi 窗口最大化后控件的大小变化怎么设置

    设置按钮的Anchors属性.可以通过此属性设置其边界是否随父类一起变化.默认akleft+aktop即左边界和上边界随窗口变化,也就是说如果窗口位置移动了,按钮将保持其left和top边界与窗口的距 ...

  6. oracle 分区和分区索引

    一.个人理解:建表时一般都会指定在一个表空间上,但是可能随着表空间扩大,查询越来越慢,分区表就是将一个表实际存在不同的表空间,oracle存储分为块,断,表空间.新建一个表,会给表分配指定大小的段,段 ...

  7. 修改oracle数据库默认时间格式

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ccchencheng.blog.51cto.com/2419062/929695 ...

  8. Linux系统之更改默认块大小

    查看操作系统块大小:#tune2fs  -l /dev/sda1 |grep 'Block size'               ( tune2fs  -l  /dev/sda1可以查看更多相关文件 ...

  9. 01 Oracle分区索引

    Oracle分区索引   索引与表类似,也可以分区: 分区索引分为两类: Locally partitioned index(局部分区索引) Globally partitioned index(全局 ...

随机推荐

  1. 1. Spark Streaming概述

    1.1 什么是Spark Streaming Spark Streaming类似于Apache Storm,用于流式数据的处理.根据其官方文档介绍,Spark Streaming有高吞吐量和容错能力强 ...

  2. [洛谷P4385][COCI2009]Dvapravca(咕咕咕)

    题目大意:很早以前做的题 题解: 卡点: C++ Code: #pragma GCC optimize("Ofast") #pragma GCC optimize("un ...

  3. Robot Arms AtCoder - 4432 (构造)

    大意: 给定平面上$n$个点$(x_i,y_i)$. 要求构造一个序列$d$, $d_i$表示每步走的距离, 再构造$n$个命令串, 要求从原点出发按照第$i$个命令走, 走完恰好到达$(x_i,y_ ...

  4. 将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本)

    原文:将 C++/WinRT 中的线程切换体验带到 C# 中来(WPF 版本) 如果你要在 WPF 程序中使用线程池完成一个特殊的任务,那么使用 .NET 的 API Task.Run 并传入一个 L ...

  5. SSM前后端分离 ssm+html+js(ajax) 这种controll层的返回值是结合或者网址

    提示: 1.单表查询多条数据用 list<实体类名字> mapper层 1.1单表查询单条数据用  对象 2.两表关联查多条 list<map<String,Object> ...

  6. C# 简单的定时器使用

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  7. Java知识回顾 (14)网络编程

    本资料来自于runoob,略有修改. 网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细 ...

  8. MPSoc之Hello World学习笔记

    XILINX 新一代 SOC,Zynq UltraScale+ MPSOC 系列性能强悍无比,号称相比ZYNQ 7000系列每瓦性能提升5倍,一直想体验.近期因项目需要,入手了一套米尔的MPSoc开发 ...

  9. vue-cli + webpack 环境搭建

    1.下载nodeJS,官网 https://nodejs.org/en/ . 2.安装nodeJS.安装完成后可以检测node -v 如果版本号的话则正常. 3.安装淘宝镜像.npm install ...

  10. nepenthes用法

    安装 # apt-get install nepenthes 配置文件 # vi submit-file.conf submit-file { path "/var/lib/nepenthe ...