Oracle I O優化小技巧

2021-05-12 11:49:24 字數 2778 閱讀 7908

重做日誌檔案與歸檔日誌檔案放到不同硬碟.

資料檔案與重做日誌檔案放到不同硬碟.

不同的重做日誌檔案、控制檔案、歸檔日誌檔案最好放到不同硬碟

控制檔案、重做日誌檔案放到高速硬碟。不行就放到同一硬碟高速區,即柱面號低的硬碟外部半圈。

歸檔日誌可以放在低速硬碟或分割槽

單純增加硬碟大小不太管用。最好增加硬碟物理數量和控制器數量。

system表空間只存放系統表和資料.

還原表空間只做還原用.

臨時表空間只做排序區使用.

資料表和索引放到不同表空間.索引多或大時,可以考慮不備份索引.

大物件(lob)最好放到單獨的表空間

檔案i/o監控與診斷

a.) 需要timed_statistics引數為true

b.) select file#, phyblkrd, phyblkwrt, readtim, writetim from v$filestat;

查詢表的資料行遷移狀況,需要先做統計.

a.) analyze table ***.yyy compute statistics;

b.) select num_rows, chain_cnt from dba_tables where owner = '***' and table_name = 'yyy';

注意''中內容需要大寫.其中chain_cnt欄位就是遷移數量.

如果遷移比較嚴重,首先要避免後面繼續發生.所以要加大pctfree的引數.

a.)首先確認當前值

select table_name, pct_free from dba_tables where owner = '***' and table_name = 'yyy';

b.) 調整,如需要的話.

alter table ***.yyy pctfree 30;

消除已有遷移

a.)非分割槽表

alter table ***.yyy move;

b.)其他表

ba.) 首先利用exp或expdp匯出該錶

bb.) 使用ddl語句truncat該錶. 注意不要使用dml語句delete,那樣會產生大量undo資料,且速度慢.

truncate table ***.yyy

bc.) 利用imp或impdp匯入之前匯出的資料

索引可能存在左右不平衡,或大量被標記刪除卻並未真正刪除的索引,從而影響效能.需修正.

a.)收集資訊

execute dbms_stats.gather_index_stats('使用者名稱','索引名');

或analyze index ***.iii compute statistics;

b.)查詢索引沉餘資訊

select name, (del_lf_rows_len/lf_rows_len) * 100 as wastage from index_stats;

index_stats表中的列含義:

lf_rows 當前索引記錄行數              lf_rows_len 全部索引長度

del_lf_rows 刪除的索引記錄行數    del_lf_rows_len 被刪除索引的全部長度

c.)查詢索引深度資訊

select index_name, num_rows, blevel, status from dba_indexes where table_owner = '***' and table_name = 'yyy';

一般blevel在3以下都沒問題.

d.)重建索引消除問題. 有時需要加大資料塊(db_block_size)大小來降低索引深度,推薦8k.

alter index ***.iii rebuild;

刪除大量資料時,避免使用delete而是使用truncate.可見減少還原資料量和執行時間.如有少量例外資料可使用臨時表暫存,而後再行匯入.如:

create table sales_temp as (select * from sales where rownum <= 18);

truncate table sales;

insert into sales (select * from sales_temp);

drop table sales_temp;

注意truncate是ddl不可被rollback

查詢重做日誌切換情況

select sequence#, to_char(first_time, 'rr-mm-dd hh:mm:ss') "date time" from v$log_history;

改變使用者預設表空間

alter user *** default tablespace tbs;

確認:select username, created, default_tablespace from dba_users where username = '***';

移動表和索引到不同表空間.

alter table *** move tablespace tbs;

alter index pk_emp rebuild tablespace tbs;

查詢:select table_name, tablespace_name from dba_tables where owner = '***';

select index_name, tablespace_name, table_name, status from dba_indexes where owner = '***';

注意,即使只是移動了表也要重建該錶的所有索引.因為此時索引的狀態(status)已是不可用(unusable).此時對該錶的訪問都是以全表掃瞄的方式進行的.

mysql優化小技巧

對mysql優化時乙個綜合性的技術,主要包括 a 表的設計合理化 符合3nf b 新增適當索引 index 四種 普通索引 主鍵索引 唯一索引unique 全文索引 c 分表技術 水平分割 垂直分割 d 讀寫 寫 update delete add 分離 e 儲存過程 模組化程式設計,可以提高速度 ...

Mysql優化小技巧

思夢php 2019 02 09 07 01 00 資料量和要求 優化技巧 先把每一條心得記錄在這裡,後面會進行實驗對其一一驗證。查詢資料總條數時,使用max id 而不是count 進行總量計數。當然,前提是id是從1開始自增長,並且沒有行被刪除過。對於常用的查詢字段建立索引。索引的速度優勢顯而易...

Android優化小技巧

示例 linearlayoutmanager linearlayoutmanager newlinearlayoutmanager this 此方法用於設定layoutmanager額外的預留空間,可以簡單的理解,如果我們返回乙個螢幕高度,則對於recyclerview來說,它將認為整個螢幕的長度是...