Oracle性能調(diào)整中的相關(guān)要點(diǎn)的介紹
以下的文章主要是介紹Oracle性能調(diào)整中的相關(guān)要點(diǎn)的應(yīng)用以及優(yōu)化,如果你在Oracle性能調(diào)整中的相關(guān)要點(diǎn)的應(yīng)用方面有想了解的欲望,以下的文章就是滿足你對(duì)Oracle性能調(diào)整中相關(guān)要點(diǎn)的知識(shí)的概要。
1、概念
為了提高性能,可以使用下列數(shù)據(jù)訪問(wèn)方法:
- A、Clusters
- B、Indexes
- B-tree(normal or reverse key)
- bitmap
- -function-based
- C、Index-organized tables
- D、Materialized views
索引的層次越多,效率越低,如果索引中含有許多已刪除的行,這個(gè)索引也會(huì)變得低效,如果索引數(shù)據(jù)的15%已經(jīng)被刪除,應(yīng)該考慮重建索引。
2、應(yīng)用問(wèn)題
A、使用可聲明的約束而不是通過(guò)代碼限制
B、代碼共享
C、使用綁定變量而不是文字來(lái)優(yōu)化共享sql
D、調(diào)整cursor_sharing的值(EXACT/SIMILAR/FORCE)
- A、Clusters
- B、Indexes
- -B-tree(normal or reverse key)
- -bitmap
- -function-based
- C、Index-organized tables
- D、Materialized views
1、避免動(dòng)態(tài)分配的缺陷
創(chuàng)建本地管理的表空間;
合理設(shè)置segment的大??;
監(jiān)控將要擴(kuò)展的segment:
- SELECT owner, table_name, blocks,
empty_blocks FROM dba_tables WHERE empty_blocks /
(blocks+empty_blocks) < .1;
2、high water mark
記錄在segment header block中,在segment創(chuàng)建的時(shí)候設(shè)定在segment的起始位置,當(dāng)記錄被插入的時(shí)候以5個(gè)block的增量增加,truncate可以重設(shè)high water mark的位置,但delete不能。
在full table scan中,oracle會(huì)讀取high water mark以下的所有的數(shù)據(jù)塊,所以high water mark以上的塊也許會(huì)浪費(fèi)存儲(chǔ)空間,但不會(huì)降低Oracle性能。
可以通過(guò)下列方法收回表中high water mark以上的塊:
- Alter table_name deallocate unused;
對(duì)于high water mark以下的塊:
使用import/export工具:export數(shù)據(jù);drop或truncate表;import數(shù)據(jù)?;蛘呃胊lter table tanle_name move命令去移動(dòng)表的存儲(chǔ)位置(此時(shí)需要重建索引)。
3、表統(tǒng)計(jì)
用analyize命令生成表統(tǒng)計(jì),然后到dba_table查詢相關(guān)信息。
- ANALYZE TABLE ndls.t_wh_shipping_bill COMPUTE STATISTICS;
- SELECT num_rows, blocks, empty_blocks as empty,avg_space,
chain_cnt, avg_row_len FROM dba_tables WHERE owner =
'NDLS' AND table_name='T_WH_SHIPPING_BILL';- Columns Description
- NUM_ROWS Number of rows in the table
- BLOCKS Number of blocks below the table high-water mark
- EMPTY_BLOCKS Number of blocks above the table high-water mark
- AVG_SPACE Average free space in bytes in the blocks below
high-water mark- AVG_ROW_LEN Average row length, including row overhead
- CHAIN_CNT Number of chained or migrated rows in the table
- block size
通過(guò)下列方法可以最小化block的訪問(wèn)次數(shù):
使用更大的block size;緊密壓縮行;阻止行鏡像。后兩者存在沖突,越多的行被壓縮在一個(gè)block里,越容易產(chǎn)生鏡像。Block size 在數(shù)據(jù)庫(kù)創(chuàng)建的時(shí)候設(shè)定,不能被輕易改變,是讀取數(shù)據(jù)文件時(shí)最小的IO單元,大小范圍是2K-64K,應(yīng)該設(shè)置成OS塊的整數(shù)倍,小于或等于OS IO時(shí)能讀取的存儲(chǔ)區(qū)域。
較小的block size的優(yōu)點(diǎn):極少block競(jìng)爭(zhēng);有利于較小的行和隨機(jī)訪問(wèn)。缺點(diǎn)是存在相當(dāng)高的成本,每個(gè)block的行數(shù)更少,可能需要讀取更多的index塊。Block size的選擇影響系統(tǒng)的Oracle性能,在一個(gè)OLTP環(huán)境中,較小的block size更合適,而在DSS環(huán)境中,適宜選擇較大的block size。
【編輯推薦】