oracle資料庫表分割槽

2021-10-06 13:42:59 字數 2871 閱讀 6601

最近偶然有聽到資料庫表分割槽的概念,一時興趣來潮,就想去稍微了解下。對於我們一些專案,可能我們需要接入一些資料,時間越長,資料量就越多,資料庫表訪問就越慢。這時候適量的分割槽有助於提高資料庫表的訪問速度。

一、 首先說說比較常用的集中分割槽方法

範圍分割槽–>時間分割槽

create table data_fenqu2 

( order_id number(7) not null,

order_date date

) partition by range (order_date)

(partition data_part1 values less than (to_date('2020-05-24','yyyy-mm-dd')) ,

partition data_part2 values less than (to_date('2020-05-25','yyyy-mm-dd')),

partition data_part3 values less than (to_date('2020-05-26','yyyy-mm-dd')),

partition data_part4 values less than (maxvalue)

)

時間<2020-05-24的資料會自動放入data_part1 區,2020-05-24<=時間<2020-05-25會放入data_part2 區,下面同理。如果沒有設定maxvalue,則當資料的時間大等於2020-05-26時。會提示插入資料失敗,因為該資料無法匹配任何分割槽。

範圍分割槽–>主鍵大小分割槽

create table data_fenqu1

( data_id number not null primary key,

status char(1)

) partition by range (data_id)

( partition cus_part1 values less than (2),

partition cus_part2 values less than (4),

partition cus_part3 values less than (10),

partition cus_part4 values less than (maxvalue)

)

列表分割槽–>字段引數分割槽

create table data_fenqu3

(data_id number not null primary key,

status varchar2(20)

)partition by list (status)

(partition status1 values ('1') ,

partition status2 values ('2') ,

partition status3 values ('3',『4』) ,

);

二、分割槽維護操作

--顯示當前使用者可訪問的所有分割槽表資訊:

select * from all_part_tables

--顯示當前使用者所有分割槽表的資訊

select * from user_part_tables

--顯示當前使用者建立的分割槽表

select * from user_tables a where a.partitioned='yes'

--檢視分割槽表的分割槽的情況

select * from user_tab_partitions where table_name ='data_fenqu2';

--新增分割槽

alter table data_fenqu2 add partition data_part21 values less than(to_date('2020-05-27','yyyy-mm-dd'));

--刪除分割槽(注意:如果刪除的分割槽是表中唯一的分割槽,那麼此分割槽將不能被刪除,要想刪除此分割槽,必須刪除表。)

alter table data_fenqu2 drop partition data_part21;

--合併分割槽,只能向高的合併

alter table data_fenqu2 merge partitions data_part1,data_part2 into partition data_part2;

--拆除分割槽

alter table data_fenqu2 split partition data_part2 at(to_date('2020-05-21','yyyy-mm-dd')) into (partition data_part21,partition data_part22);

--對分割槽重新命名

alter table data_fenqu2 rename partition data_part21 to data_part22;

--檢視分割槽的資料

select * from data_fenqu2 partition(data_part21) t where t.order_id=1;

--刪除分割槽的資料

alter table data_fenqu2 truncate partition data_part21;

--跨分割槽查詢

select * from

(select * from data_fenqu2 partition (data_part21)

union all

select * from data_fenqu2 partition (data_part22)

);

簡單做個筆記,當然,目前我是用不到,所以沒有做深入的了解。如果以後有接觸,會回頭更新這篇部落格

oracle資料庫分割槽

numtoyminterval和numtoyminterval是日期轉換函式,作用 可以將數字轉換成相應的日期單位時間 1.numtoyminterval n char expr char expr 日期描述,可以是year和month。通常當我們使用add month新增月時,如果輸入是本月月底的...

資料庫表分割槽

create database mytest on sql server 資料庫表分割槽由三個步驟來完成 1.建立分割槽函式 2.建立分割槽架構 3.對錶進行分割槽 1.0建立表分割槽函式 create partition function mypartfunc int as range right...

資料庫表分割槽

實現資料庫表分割槽步驟 1,檢視資料庫檔案儲存位置 select from v datafile 2,在伺服器上資料庫儲存位置上,新建表空間檔案 touch d part1.dbf touch d part2.dbf 第二種方式 在plsql或oracle命令端,建立表空間 3,建立表,並根據型別分...