測試 partition table與沒有partition的table 效能的差異,由於partition table有許多類型

因次小弟這次只操作類型range

partition table主要是將一張很大量的資料表透過切割的方法將他分散到多個表空間的資料表中,減少資料表的IO

 

在此先建立表空間

create tablespace tbs1;

create tablespace tbs2;

create tablespace tbs3;

create tablespace tbs4;

select * from v$tablespace; 這是查看表空間的指令

 

建立沒有partition的資料表(t1)

create table t1 (object_id number,owner varchar2(20),object_name varchar2(50));

insert into t1 select object_id,owner,object_name from dba_objects;

 

建立partition表(t)  object_id15000為range

 

create table t (object_id number ,owner varchar2(20),object_name varchar2(50))
partition by range (object_id)
(
partition table1 VALUES LESS THAN (15000) tablespace tbs1,      
partition table2 VALUES LESS THAN (30000) tablespace tbs2,
partition table3 VALUES LESS THAN (45000) tablespace tbs3,
partition table4 VALUES LESS THAN (maxvalue) tablespace tbs4);

 

 

insert 資料

insert into t  select object_id,owner,object_name from dba_objects;

select count(*) from t;  

有56244筆資料                   * 資料筆數越多越好  越能看出差異

 

開始測試:

測試1: 查詢object_id<12000的資料

   

 

測試2: 跨區間查詢object_id 100~50000的資料

 

 

 

小結:

測試一 

表格 consistent gets(總讀取數量) physical reads
T 922 75
T1 1062 285

在object_id<12000作全表掃描(table access full),由於t表在table1分區終究可以查到,會比t1表全掃描效能

提升,IO降低

 

測試二

 

表格 consistent gets(總讀取數量) physical reads
T 3615 317
T1 3515 283

 

object_id 100~50000的查詢中,由於t表需要跨所有分區查詢,所以效能不一定比較好(在此範例效能是略差一點)

 

 

因此,透過partition table不一定會使效能提升,還是要看查詢條件或是分區方法來決定~

文章標籤
全站熱搜
創作者介紹
創作者 to52016 的頭像
to52016

Eason [資料科學//Python學習/資料庫] & [拍片&剪片]

to52016 發表在 痞客邦 留言(0) 人氣(2,406)