oracle資料庫設定
資料庫設計方面:
1:資料庫塊大小選擇(db_block_size)
預設是8k,塊越大,裝的行記錄就越多,所需的塊就越少,讀取記錄產生的io就越少
OLAP(資料倉儲)特點是一般使用者不多,併發不大,查詢方式最多是使用全表掃描,返回大量的資料,
OLTP 特點是使用者很多,併發很大,查詢方式最多是使用索引,返回極少的資料
OLTP 特點是使用者很多,併發很大,查詢方式最多是使用索引,返回極少的資料
因此OLAP中block儘量大,塊設定越大效能越會有提升
oltp系統傾向於索引讀返回少量記錄,塊的大小對效能影響不大。如果塊設定太大,容易導致
大量併發查詢及更新操作都指向同一個資料塊,從而產生熱塊
oltp系統傾向於索引讀返回少量記錄,塊的大小對效能影響不大。如果塊設定太大,容易導致
大量併發查詢及更新操作都指向同一個資料塊,從而產生熱塊
2:建立資料檔案時extent的擴充套件
對oracle來說,表空間擴充套件是要格式化作業系統檔案成為oracle可以識別的資料庫檔案,需要很大開銷
因此在建立表空間時,一般會多預先分配大點的空間
因此在建立表空間時,一般會多預先分配大點的空間
3:表的pctfree設定
pctfree控制著block塊中的free空間,可以根據資料庫對錶更新的頻繁程度,對錶的pctfree做設定,免得產生行遷移,影響效能
pctfree設定大一些,可避免行遷移
alter table xx pctfree 20
alter table xx pctfree 20
其實消除行遷移的一個簡單方法,就是資料重建
分割槽表的一些基礎
分割槽表
三種型別:範圍分割槽、列表分割槽、hash分割槽、組合分割槽
範圍分割槽使用最廣,列表分割槽次之
不同分割槽,在不同segment中,可以將分割槽指定到不同的表空間裡
1:範圍分割槽
最常見的是按時間列進行分割槽
create table xxx(id number,deal_date date,area_code number)
partition by range(deal_date)
(
partition p1 values less tha(to_date('2012-02-01','YYYY-MM-DD')),
...................
partition p11 values less tha(to_date('2012-12-01','YYYY-MM-DD')),
partition p12 values less tha(to_date('2013-01-01','YYYY-MM-DD')),
partition p_max values less tha(maxvalue)
);
2:列表分割槽
最常見的是按地區列進行分割槽
partition by range(deal_date)
(
partition p1 values less tha(to_date('2012-02-01','YYYY-MM-DD')),
...................
partition p11 values less tha(to_date('2012-12-01','YYYY-MM-DD')),
partition p12 values less tha(to_date('2013-01-01','YYYY-MM-DD')),
partition p_max values less tha(maxvalue)
);
2:列表分割槽
最常見的是按地區列進行分割槽
create table xxx(id number,deal_time date,area_code number)
partition by list(area_code)
(
partition p51 values(51),
partition p52 values(52),
..................
partition p59 values(59),
partition p_other values(default)
);
分割槽表的原理
將一個大的物件分成了多個小物件
分割槽表作用
1:分割槽消除,將大物件劃分為更小的物件
2:分割槽truncate更快捷
很多歷史表、日誌表都被設計為分割槽表,正是由於這個特性使得清理資料極其方便
3: 分割槽資料轉移備份
可以將分割槽表的某個分割槽資料透過分割槽交換的方式交換出來備份
普通表和分割槽表的欄位必須完全一樣
將分割槽表t_range的p8分割槽的資料備份到普通表t_normal中
alter table t_range exchange partition p8 with table t_normal
然後可以看到p8分割槽的資料不見了,直接跑到t_normal表裡了
4:分割槽切割(split)
5: 分割槽合併
分割槽索引
1:全域性索引
可以理解為普通索引,整個分割槽的一個大索引
create index idx_range_date on t_range(deal_date);
2:區域性索引
其實就是針對各分割槽所建的索引
create index idx_range_areacode on t_range(area_code) local
select index_name,status from user_indexes where index_name in('IDX_RANGE_DATE','IDX_RANGE_AREACODE')
查詢出status狀態為N/A的表示區域性索引,需要到user_ind_partitions中分析索引狀態
select index_name,partition_name,status from user_ind_partitions where index_name='IDX_RANGE_AREACODE'
分割槽索引失效
1: 一般在對分割槽表的分割槽操作時,對區域性索引一般都沒有影響,但是對全域性索引影響比較大,一般都會重建全域性索引
alter index idx_range_date rebuild
也可以在執行分割槽操作時直接加update global indexes引數,如:
alter table t_range truncate partition p2 update global indexes
2:有索引效率更低
很有可能是遍歷了整個分割槽表
3:無法應用分割槽條件
partition by list(area_code)
(
partition p51 values(51),
partition p52 values(52),
..................
partition p59 values(59),
partition p_other values(default)
);
分割槽表的原理
將一個大的物件分成了多個小物件
分割槽表作用
1:分割槽消除,將大物件劃分為更小的物件
2:分割槽truncate更快捷
很多歷史表、日誌表都被設計為分割槽表,正是由於這個特性使得清理資料極其方便
3: 分割槽資料轉移備份
可以將分割槽表的某個分割槽資料透過分割槽交換的方式交換出來備份
普通表和分割槽表的欄位必須完全一樣
將分割槽表t_range的p8分割槽的資料備份到普通表t_normal中
alter table t_range exchange partition p8 with table t_normal
然後可以看到p8分割槽的資料不見了,直接跑到t_normal表裡了
4:分割槽切割(split)
5: 分割槽合併
分割槽索引
1:全域性索引
可以理解為普通索引,整個分割槽的一個大索引
create index idx_range_date on t_range(deal_date);
2:區域性索引
其實就是針對各分割槽所建的索引
create index idx_range_areacode on t_range(area_code) local
select index_name,status from user_indexes where index_name in('IDX_RANGE_DATE','IDX_RANGE_AREACODE')
查詢出status狀態為N/A的表示區域性索引,需要到user_ind_partitions中分析索引狀態
select index_name,partition_name,status from user_ind_partitions where index_name='IDX_RANGE_AREACODE'
分割槽索引失效
1: 一般在對分割槽表的分割槽操作時,對區域性索引一般都沒有影響,但是對全域性索引影響比較大,一般都會重建全域性索引
alter index idx_range_date rebuild
也可以在執行分割槽操作時直接加update global indexes引數,如:
alter table t_range truncate partition p2 update global indexes
2:有索引效率更低
很有可能是遍歷了整個分割槽表
3:無法應用分割槽條件
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28373936/viewspace-1722282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle資料庫snap的設定Oracle資料庫
- Oracle資料庫設定預設表空間Oracle資料庫
- 設定Oracle資料庫開機自啟動Oracle資料庫
- Oracle資料庫的可恢復性設定Oracle資料庫
- oracle資料庫rman歸檔設定和管理Oracle資料庫
- django—資料庫設定Django資料庫
- Oracle EBS 資料庫密碼複雜度設定Oracle資料庫密碼複雜度
- Oracle資料庫PL/SQL快捷鍵設定詳解Oracle資料庫SQL
- Oracle資料庫定時器JobOracle資料庫定時器
- LINUX下為ORACLE資料庫設定大頁--hugepageLinuxOracle資料庫
- oracle 資料庫設定表和欄位的別名Oracle資料庫
- RedHat(Linux) Oracle資料庫設定開機自啟動RedhatLinuxOracle資料庫
- Oracle資料庫設定為歸檔模式的操作方法Oracle資料庫模式
- ORACLE資料庫安全漏洞之監聽密碼設定Oracle資料庫密碼
- oracle資料庫字符集設定的查詢語法Oracle資料庫
- Oracle資料庫全文索引設定步驟簡介(轉)Oracle資料庫索引
- MYSQL資料庫常用基本設定MySql資料庫
- WebSphere中的Oracle資料來源設定------JSP和Oracle資料庫的連線 (轉)WebOracleJS資料庫
- file-max設定過小導致oracle資料庫hang住Oracle資料庫
- 設定oracle資料庫IP訪問限制(IP白名單黑名單)Oracle資料庫
- oracle SGA設定過大導致資料庫無法啟動Oracle資料庫
- ORACLE RAC資料庫中的初始化引數的設定Oracle資料庫
- 2.5.10.1 設定資料庫時區資料庫
- MySQL設定資料庫為只讀MySql資料庫
- PostgreSQL資料庫連線保持設定SQL資料庫
- Mysql 5.5 設定資料庫引數MySql資料庫
- SQL SERVER 資料庫所用埠設定SQLServer資料庫
- 請問如何設定mysql資料庫?MySql資料庫
- 資料庫連線設定失敗!資料庫
- 如何設定多資料庫連線?!資料庫
- openGauss 設定資料庫審計資料庫
- 設定oracle資料字典的路徑Oracle
- ORACLE/MySQL資料庫模式設計~~OracleMySql資料庫模式
- 【PDB】Oracle資料庫如何檢查和設定pdb最大儲存大小Oracle資料庫
- Oracle 11G 資料庫重要的初始化引數設定Oracle資料庫
- oracle grid 叢集軟體設定資料庫不自動起來Oracle資料庫
- 怎麼設定資料庫的報警資料庫
- 如何設定新資料庫的PGA值資料庫