分割槽
1.範圍分割槽
a.通常按時間字段劃分
create table
partition by range() (
partition partition_1 values less than (to_date('01/02/2000','dd/mm/yyyy')),
partition partition_2 values less than (to_date('01/03/2000','dd/mm/yyyy')) )
b.使用傳遞表空間的方式匯出歷史資料入olap資料庫
表空間上的物件必須為自包含,表示為:
a.索引在這個表空間上,它所引用到的表不在其他表空間上
b.分割槽表的部分分割槽不在其他表空間上
c.完整性約束的參考物件不在其他表空間上
d.表中包含的lob物件不在其他表空間上
c.使用分割槽交換的方法,將分割槽表(不同分割槽使用不同表空間)的部分分割槽轉換到某臨時建立的表空間,然後使用表空間傳遞
alter table
partition_table
exchange partition
partition_1
with table
tmp_table
including indexes with validation
tmp_table與
partition_table有相同的表結構定義
2. 雜湊分割槽
a.適合於在各個分割槽中資料分布要求均勻的情況下,比如分割槽表空間存放在不同的容量相近的物理介質中,可以提高dml的並行操作(因為平均)
create table
partition by hash()
partitions 8
b.雜湊分割槽是一種基於hash函式的分割槽方式,不能drop,split以及merge分割槽,但是可以truncate分割槽,分割槽索引,分割槽裁剪可用
c.雜湊分割槽資料均勻分布的前提條件是,hash列重複率比較低
3. 列表分割槽
提供一種按照欄位的值來進行分割槽的方法,適合有高重複率的字段值的表
create table
partition by list() (
partition partition_1 values(),
partition partition_2 values(),
partition partition_other values(default) --預設分割槽 )
4. 組合分割槽
a.範圍-雜湊組合分割槽
create table
partition by range()
subpartition by hash() (
partition p1 values less than() (
subpartition sp1,
subpartition sp2 )
), (
partition p2 values less than() (
subpartition sp3,
subpartition sp4 )
)b.範圍-列表組合分割槽
create table
partition by range()
subpartition by list() (
partition p1 values less than() (
subpartition sp1 values () ,
subpartition sp2 values () )
), (
partition p2 values less than() (
subpartition sp3 values () ,
subpartition sp4 values () )
) 索引
1. b樹索引
a.主鍵或者唯一性約束
主鍵更強調表的關係性,它可以被其他表的外來鍵所用
唯一性約束則強調字段值的唯一性
即使有上億條記錄的表中,b樹索引的效能不被影響多少
b.鍵值重複率較低的字段
2. 位圖索引
每乙個位圖索引的鍵值中,都會存放指向很多行的指標,而不是一行,這樣,位圖索引存放的鍵值就會比b樹索引少得多
位圖索引適合對索引的鍵值進行count這樣的操作,也非常適合在索引欄位間進行或(「or」)與(「and」)這樣的邏輯運算操作
位圖索引占用的空間要遠小於b樹索引占用的空間
不適用於有大量「寫」操作的資料庫,在於更新時會阻塞相應鍵值的多行記錄
3. 全文索引
create index *** on t(name) indextype is ctxsys.context;
select * from t where contain(name,'***') >0
建立了dr$開頭的四個全文索引的基表,所有的全文索引的資訊都保留在這些基表內。索引建立在基表上。全文索引本身並不包含資料,也不占用空間(無段物件在user_segments)
全文索引占用的空間非常大,會達到原表的幾倍或者更多
以context方式建立的全文索引預設不是基於事務的,當提及dml操作,修改的資訊不會影響索引,而是存放在dr$penging表中,需要同步索引更新
alter index *** rebuild parameters('sync')
物件屬性
oltp系統以下的物件屬性應該受到關注:
pct_free 乙個資料塊中空閒空間的最小百分比
pct_used 乙個資料塊儲存資料的最小百分比
ini_trans 乙個資料塊上最初分配的事務數
max_trans 乙個資料塊上最大分配的事務數
initial_extent 第乙個extent的大小
next_extent 下乙個extent的大小
min_extents 段首次分配的extent的大小
max_extents 最大可分配的extent的大小
pct_increase extent擴充套件時,每次增加的百分數
freelists 段中空閒塊列表
cache 是否快取到記憶體中
olap系統以下的物件屬性應該受到關注:
degree
物件並行執行時使用的並行度,並非並行度越高,執行效率就越高,和系統資源,cpu數量,是否rac架構等因素有關
在物件(表,索引等)上建立並行度
伺服器cpu數x每個cpu啟用的執行緒數=預設並行度
select degree from user_tables where table_name=''
使用hint方式
select /*+ parallel(t1 4) */ from t1;
並行度不能在分割槽級別設定
compression
分割槽表或者分割槽索引是可以單獨壓縮的
alter table t1 modify partition p1 compress;
分割槽索引的壓縮要求先建索引的壓縮,然後取消分割槽索引的壓縮
alter index t1_idx rebuild partition p1 nocompress
資料壓縮,釋放更多的磁碟空間給其他物件使用,前提是資料重複率高有效
提高查詢效能,壓縮之後,掃瞄的資料塊數量變少,物理i/o減少,一致性讀減少。
dml操作涉及資料壓縮的有:
alter table move
create table as select
sqlldr+ direct path
普通的insert操作沒有資料壓縮
015 資料庫設計思想
資料庫的設計 參考文獻 1 多表之間的關係 1.1 分類 1 一對一 只做了解 比如 某個人和它的身份證 分析 乙個人只要乙個身份證,乙個身份證只能對應乙個人。2 一對多 或叫多對一 如 部門和員工 分析 乙個部門多有個員工,乙個員工只能對應乙個部門 3 多對多 如 學生和課程 分析 乙個學生可以選...
資料庫設計中引入OOD思想
例子 汽車銷售商要求對銷售車型的建立資料庫進行統計 考慮這樣幾種設計方案 1 轎車 id,顏色,車長,排量,最多乘坐人數,銷量,有無頂窗 卡車 id,顏色,車長,排量,最多乘坐人數,載重量,銷量 電單車 id,顏色,車長,排量,踏板或檔位車 2 車 id,顏色,車長,排量,最多乘坐人數,銷量,有無頂...
rbac許可權控制資料庫設計思想
rbac是乙個基於角色的訪問控制,作用是實現訪問控制,是一種資料庫設計思想,根據 rbac 思想進行資料庫設計 根據資料庫設計更 好的完成許可權控制.許可權控制經常分類 1.選單功能 2.url控制 控制訪問不同的控制器 3.資源可見性 頁面某些元素對不同的使用者可見性不同 示例場景 需求 新增乙個...