達夢資料庫 分割槽表例項

2021-10-10 20:33:37 字數 4311 閱讀 9242

sql> select para_name,para_value from v$dm_ini where para_name=『list_table』;

list_table=0 預設的索引組織表

list_table=1 建立的表為堆表

不建議改引數

規則:1.取名 2.功用(資料型別)3.儲存位置 4.約束 5.備註(注釋) 6.正規化

檢視表的建立語句:

sql> sp_tabledef (『sysdba』,『t1』);

sql> select

dbms_metadata.get_ddl(『table』,『t1』,『sysdba』);

建立:sql> create table t2 (id int primary key,name

varchar(10)) storage (on main ,nobranch);

oracle: assm (bitmap) l3 — l2 — l1

mssm (free list)

資料塊的管理: oracle:pct_free(10%) pct_used

達夢:fillfactor (100%)(行鏈結)

sql> create table t3 (id int primary key,name

varchar(10)) storage (on main ,nobranch,fillfactor 80);

範圍分割槽(數字,日期)

建立範圍分割槽表建立乙個範圍分割槽,乙個月乙個分割槽。每個分割槽存放當月的資料。

create table r_t1 (sid int ,name varchar(10),bir date)

partition byrange(bir) (partition p1 values less than (『2019-12-31』) tablespace tbs1,

partition p2 values less than (『2020-01-31』) tablespace tbs2,

partition p3 values less than (『2020-02-29』) tablespace tbs3

);create table r_t2 (sid int primary key ,name varchar(10),bir

date)

partition by range (bir) (partition p1 values less than (『2019-12-31』) ,

partition p2 values less than (『2020-01-31』) ,

partition p3 values less than (『2020-02-29』) ) storage (on tbs1,nobranch );

錄入操作:

begin

for i in 1…10000 loop

insert into r_t1 values (i,『aaa』||i,sysdate);

commit;

end loop;

end; /

沒有找到合適的分割槽

select * from dba_tab_partitions where table_name=『r_t1』;

查詢:

sql> select * from r_t1 partition (p2);

增加分割槽

(2020-10 資料)

alter table r_t1 add partition p4 values less than (『2020-10-31』);

刪除分割槽:

sql> alter table r_t1 drop partition p4;

拆分分割槽

從 2 月 10 日分界點(分割槽太大了)資料分布不均勻

sql> alter table r_t1 split partition p3 at (『2020-02-10』) into (partition p3_1,partition p3_2);

合併分割槽

(假設把 8 月和 9 月分割槽合併)

sql> alter table r_t1 merge partitions p3_1,p3_2 into partition p3;

交換分割槽

做分割槽交換,原表的資料就沒有了。

sql> alter table r_t1 exchange partition p2 with table test;

問題:超出範圍資料如何處理?

sql> alter table test add partition pmax values less than (maxvalue);

間隔分割槽是範圍分割槽的公升級版本。

(分割槽表取名是資料庫分配的。)

oracle 的間隔分割槽,達夢的間隔分割槽

numtoyminterval(達夢支援) 年 月

numtodsinterval(達夢不支援) 天 小時 周 分

create table table01

(id int,

name varchar(20),

bir date

)partition by range(bir)

interval (numtoyminterval(1,『month』))

(partition p1 values less than (『2020-01-01』),

partition p2 values less than (『2020-02-01』)

);雜湊分割槽hash 分割槽 存資料快,取資料慢,資料幾乎

平均分配到各個分割槽上。

sql> create table h_t1 (id int,name varchar(10)) partition by hash (id) partitions 4;

雜湊分割槽不支援刪除,增加等操作

列表分割槽list

sql> create table l_t1 (id int,name varchar (20))

partition bylist(name)

(partition p1 values (『a』),

partition p2 values (『b』));

增加

sql> alter table l_t1 add partition p3 values (『c』);

刪除

sql> alter table l_t1 drop partition p3;

分割槽組合支援 l-r 、r-l 、l-h、h-r、h-l等多種組合

l-r 例項

create table sales(

sales_id int,

saleman char(20),

saledate datetime,

city char(10)

)partition by list(city)

subpartition by range(saledate) subpartition

template(

subpartition p11 values less than (『2012-04-01』),

subpartition p12 values less than (『2012-07-01』),

subpartition p13 values less than (『2012-10-01』),

subpartition p14 values equ or less than

(maxvalue))

(partition p1 values (『北京』, 『天津』)

(subpartition p11_1 values less than (『2012-10-01』),

subpartition p11_2 values equ or less than

(maxvalue)

),partition p2 values (『上海』, 『南京』, 『杭州』),

partition p3 values (default)

);

達夢資料庫的表分割槽管理

分割槽表是將大表的資料分成稱為分割槽的許多小的子集,達夢資料庫的分割槽表有範圍分割槽 雜湊分割槽 列表分割槽 間隔分割槽 組合分割槽等等多種多樣。範圍分割槽 範圍分割槽是對資料表中的某個值的範圍進行分割槽,比如可以根據業務記錄的建立日期進行分割槽,決定將該資料儲存在哪個分割槽上。雜湊分割槽 雜湊分割...

資料庫 分割槽表

步驟 先建立分割槽函式,在建立分割槽方案,最後使用分割槽方案建立表 首先熟悉一下建立分割槽函式 1 在int列上建立左側分割槽函式,下列分割槽函式將表分為四個分割槽。2 在int列上建立右側分割槽函式 3 在datatime列上建立右側分割槽函式,將資料表分為12個分割槽,每個分割槽對應dateti...

達夢資料庫例項管理

達夢資料庫啟動的過程 shutdown mount 分配共享記憶體,啟動後台的程序或者執行緒,開啟控制檔案 mount open 根據控制檔案開啟重做日誌檔案和資料檔案 資料庫的啟停方式 dmdba dm1 etc rc.d init.d dmservicetest start dmdba dm1 ...