oracle 表分割槽的簡單實現(轉與整理)

2021-09-24 13:55:51 字數 3819 閱讀 8579

剛從廈門回來,還沒緩過來。。。。。廢話不多說,先介紹簡單一些定義,以下是我copy某位博主的。

一、oracle資料庫表分割槽概念和理解

1.1、已經存在的表沒有方法可以直接轉化為分割槽表。

1.2、不在分割槽欄位上建立分割槽索引,在別的欄位上建立索引相當於全域性索引。效率低。

1.3、表空間概念:

表空間指的是是乙個或多個資料檔案的集合,所有的資料物件都存放在指定的表空間中,但主要存放的是表, 所以稱作表空間。

1.4、分割槽表概念

當表中的資料量不斷增大,查詢資料的速度就會變慢,應用程式的效能就會下降,這時就應該考慮對錶進行分割槽。表進行分割槽後,邏輯上表仍然是一張完整的表,只是將表中的資料在物理上存放到多個表空間(物理檔案上),這樣查詢資料時,不至於每次都掃瞄整張表。

二、oracle資料庫表分割槽的幾種型別

2.1、範圍分割槽(range分割槽)

範圍分割槽將資料基於範圍對映到每乙個分割槽,這個範圍是你在建立分割槽時指定的分割槽鍵決定的。這種分割槽方式是最為常用的,並且分割槽鍵經常採用日期

1)每乙個分割槽都必須有乙個values less then子句,它指定了乙個不包括在該分割槽中的上限值。分割槽鍵的任何值等於或者大於這個上限值的記錄都會被加入到下乙個高一些的分割槽中。

2)   所有分割槽,除了第乙個,都會有乙個隱式的下限值,這個值就是此分割槽的前乙個分割槽的上限值。

3)   在最高的分割槽中,maxvalue被定義。maxvalue代表了乙個不確定的值。這個值高於其它分割槽中的任何分割槽鍵的值,也可以理解為高於任何分割槽中指定的value less then的值,同時包括空值。

什麼時候使用分割槽表:

表的大小超過2gb。

表中包含歷史資料,新的資料被增加都新的分割槽中。

表分割槽有以下優點:

改善查詢效能:對分割槽物件的查詢可以僅搜尋自己關心的分割槽,提高檢索速度。

增強可用性:如果表的某個分割槽出現故障,表在其他分割槽的資料仍然可用;

維護方便:如果表的某個分割槽出現故障,需要修復資料,只修復該分割槽即可;

均衡i/o:可以把不同的分割槽對映到磁碟以平衡i/o,改善整個系統效能。

缺點:已經存在的表沒有方法可以直接轉化為分割槽表。但是有幾種方式可以間接完成這個操作,大家可以參考:oracle分割槽表的建立方法(包含已經存在的表要分割槽):

直接上手。

首先,表的設計,要想表分割槽,其實就要在表設計的同時,定義好分割槽的區間。

create table fenbiao_test

( order_id number(7) not null,

order_date date,

total_amount number,

custotmer_id number(7),

paid char(1)

) partition by range(order_date)(

partition fenbiao_test_part1 values less than (to_date('2019-04-01','yyyy-mm-dd')),

partition fenbiao_test_part2 values less than (to_date('2019-05-01','yyyy-mm-dd')),

partition fenbiao_test_part3 values less than (to_date('2019-06-01','yyyy-mm-dd'))

);

--插入資料

insert into fenbiao_test

(order_id, order_date, total_amount, custotmer_id, paid)

values

(11, to_date('2018-11-22', 'yyyy-mm-dd'), 1, 24, '5');

insert into fenbiao_test

(order_id, order_date, total_amount, custotmer_id, paid)

values

(12, to_date('2019-01-28', 'yyyy-mm-dd'), 1, 29, '5');

insert into fenbiao_test

(order_id, order_date, total_amount, custotmer_id, paid)

values

(13, to_date('2019-02-26', 'yyyy-mm-dd'), 1, 33, '5');

insert into fenbiao_test

(order_id, order_date, total_amount, custotmer_id, paid)

values

(14, to_date('2019-04-22', 'yyyy-mm-dd'), 2, 79, '6');

insert into fenbiao_test

(order_id, order_date, total_amount, custotmer_id, paid)

values

(15, to_date('2019-05-29', 'yyyy-mm-dd'), 3, 88, '7');

--檢視所有的資料

--常用的分割槽操作sql

--顯示資料庫所有分割槽表的資訊:

select * from dba_part_tables

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

select * from all_part_tables

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

select * from user_part_tables

--顯示表分割槽資訊 顯示資料庫所有分割槽表的詳細分割槽資訊:

select * from dba_tab_partitions

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

select * from all_tab_partitions

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

select * from user_tab_partitions

--顯示子分割槽資訊 顯示資料庫所有組合分割槽表的子分割槽資訊:

select * from dba_tab_subpartitions

--查詢表上有多少分割槽(注意 table_name 後的表名必須大寫)

--查詢表分割槽中的資料量   

--查詢表分割槽中的資料

例2.

oracle表分割槽設計 ORACLE 分割槽表的設計

分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...

oracle表分割槽設計 ORACLE分割槽表的設計

分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存和分析巨量的歷史資料。分割槽表...

oracle表分割槽設計 ORACLE 分割槽表的設計

oracle 分割槽表的設計 分割槽表的概念 分割槽致力於解決支援極大表和索引的關鍵問題。它採用他們分解成較小和易於管理的稱為分割槽的片 piece 的方法。一旦分割槽被定義,sql語句就可以訪問的操作某乙個分割槽而不是整個表,因而提高管理的效率。分割槽對於資料倉儲應用程式非常有效,因為他們常常儲存...