oracle performance tunning(5)
五、Rollback(undo) Segment 最佳化
1、概念
Transaction以輪循的方式使用rollback segment裡的extent,當前所在的extent滿時就移動到下一個extent。可能有多個transaction同時向同一個extent寫 資料,但一個rollback segment block中只能儲存一個transaction的資料。
Oracle 在每個Rollback segment header中儲存了一個transaction table,包括了每個rollback segment中包含的事務資訊,rollback segment header的活動控制了向rollbak segment寫入被修改的資料。rollback segment header是經常被修改的資料庫塊,因此它應該被長時間留在buffer cache中,為了避免在transaction table產生競爭導致效能下降,應有多個rollback segment或應儘量使用oracle server 自動管理的rollback segment。
2、診斷rollback segment header的競爭
如果rollback segment 由手工管理,下列措施診斷rollback segment header的競爭
SELECT class,count FROM v$waitstat WHERE class LIKE '%undo%' ;
SELECT Sum(Value) sum FROM v$sysstat WHERE NAME IN ('db block gets','consistent gets');
任何型別的等待次數(count)與總請求數(sum)的比率,不能超過1%。
或
select sum(waits)*100/sum(gets) "Ratio", sum(waits) "Waits", sum(gets) "Gets" from v$rollstat;
waits的彙總數與gets的彙總數的比率應低於1%,如果超過1%,應建立更多的rollback segment。
下列欄位數值如果大於0,則表明在rollback segment header上存在競爭:
A、v$rollstat 中的waits
B、v$waitstat中的undo header行
C、v$system_event中的undo segment tx slot事件
3、消耗更少的rollback segment
1)如果是刪除表裡所有的資料,儘可能使用trauncate而不是delete。
2)在應用中允許使用者有規律的提交,儘可能不用長事務。
3)• Import
– Set COMMIT = Y
– Size the set of rows with BUFFER
• Export: Set CONSISTENT=N
• SQL*Loader: Set the COMMIT intervals with ROWS
4、小回滾段可能出現的問題
A、事務由於缺少回滾空間失敗
B、由於下列原因導致的“Snapshot too old”問題:
Block裡的事務列表被重新整理,block裡的SCN比列表Interested Transaction List(ITL)裡起始事務的SCN更新;
Rollback segment header裡的Transaction slot被重用;
回滾資料已經被重寫;
5、9i的自動回滾管理
Undo_managment指定了回滾空間的管理方式:Auto:自動管理;Manual:手工管理回滾段。
Undo_retention指定了回滾資料的保留期限;
Undo_tablespace指定了被使用的回滾表空間;
Oracle 自動管理的表空間可以在常見資料庫的時候建立,也可以單獨建立。回滾表空間可以相互轉換(switch),但在某一時刻只能有一個回滾表空間處於活動狀 態。回滾表空間處於非活動狀態時可以刪除,如果有對處於被刪除回滾表空間裡的已提交事務的查詢時,oracle會返回一個錯誤。
估計undo tablespace大小的公式:
Undo space = (undo_retention * (undo blocks per second * db_block_size)) + db_block_size;
可以使用下列的sql設定undo_retention和undo tablespace:
select (rd*(ups*overhead)+overhead) "bytes" from (select value rd from v$parameter where name ='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*10800))) ups from v$undostat),(select value overhead from v$parameter where name='db_block_size');
其中:
Rd:undo_retention設定的時間;
Ups:undo blocks per second;
Overhead:rollback segment header;[@more@]
1、概念
Transaction以輪循的方式使用rollback segment裡的extent,當前所在的extent滿時就移動到下一個extent。可能有多個transaction同時向同一個extent寫 資料,但一個rollback segment block中只能儲存一個transaction的資料。
Oracle 在每個Rollback segment header中儲存了一個transaction table,包括了每個rollback segment中包含的事務資訊,rollback segment header的活動控制了向rollbak segment寫入被修改的資料。rollback segment header是經常被修改的資料庫塊,因此它應該被長時間留在buffer cache中,為了避免在transaction table產生競爭導致效能下降,應有多個rollback segment或應儘量使用oracle server 自動管理的rollback segment。
2、診斷rollback segment header的競爭
如果rollback segment 由手工管理,下列措施診斷rollback segment header的競爭
SELECT class,count FROM v$waitstat WHERE class LIKE '%undo%' ;
SELECT Sum(Value) sum FROM v$sysstat WHERE NAME IN ('db block gets','consistent gets');
任何型別的等待次數(count)與總請求數(sum)的比率,不能超過1%。
或
select sum(waits)*100/sum(gets) "Ratio", sum(waits) "Waits", sum(gets) "Gets" from v$rollstat;
waits的彙總數與gets的彙總數的比率應低於1%,如果超過1%,應建立更多的rollback segment。
下列欄位數值如果大於0,則表明在rollback segment header上存在競爭:
A、v$rollstat 中的waits
B、v$waitstat中的undo header行
C、v$system_event中的undo segment tx slot事件
3、消耗更少的rollback segment
1)如果是刪除表裡所有的資料,儘可能使用trauncate而不是delete。
2)在應用中允許使用者有規律的提交,儘可能不用長事務。
3)• Import
– Set COMMIT = Y
– Size the set of rows with BUFFER
• Export: Set CONSISTENT=N
• SQL*Loader: Set the COMMIT intervals with ROWS
4、小回滾段可能出現的問題
A、事務由於缺少回滾空間失敗
B、由於下列原因導致的“Snapshot too old”問題:
Block裡的事務列表被重新整理,block裡的SCN比列表Interested Transaction List(ITL)裡起始事務的SCN更新;
Rollback segment header裡的Transaction slot被重用;
回滾資料已經被重寫;
5、9i的自動回滾管理
Undo_managment指定了回滾空間的管理方式:Auto:自動管理;Manual:手工管理回滾段。
Undo_retention指定了回滾資料的保留期限;
Undo_tablespace指定了被使用的回滾表空間;
Oracle 自動管理的表空間可以在常見資料庫的時候建立,也可以單獨建立。回滾表空間可以相互轉換(switch),但在某一時刻只能有一個回滾表空間處於活動狀 態。回滾表空間處於非活動狀態時可以刪除,如果有對處於被刪除回滾表空間裡的已提交事務的查詢時,oracle會返回一個錯誤。
估計undo tablespace大小的公式:
Undo space = (undo_retention * (undo blocks per second * db_block_size)) + db_block_size;
可以使用下列的sql設定undo_retention和undo tablespace:
select (rd*(ups*overhead)+overhead) "bytes" from (select value rd from v$parameter where name ='undo_retention'),(select (sum(undoblks)/sum(((end_time-begin_time)*10800))) ups from v$undostat),(select value overhead from v$parameter where name='db_block_size');
其中:
Rd:undo_retention設定的時間;
Ups:undo blocks per second;
Overhead:rollback segment header;[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18921899/viewspace-1016898/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle.Performance.Tuning筆記OracleORM筆記
- Oracle Advanced Performance Tuning Scripts(轉)OracleORM
- 關閉sql tunningSQL
- Oracle Performance Tuning 11g2 (2)OracleORM
- Oracle 19c Concepts(06):Data Dictionary and Dynamic Performance ViewsOracleORMView
- PerformanceORM
- MySQL Performance SchemaMySqlORM
- iOS-監聽原生H5效能資料window.performanceiOSH5ORM
- webpack Performance: The Comprehensive GuideWebORMGUIIDE
- Performance Without the Event LoopORMOOP
- 設定performance模式ORM模式
- Boost UDP Transaction PerformanceUDPORM
- [譯] Performance testing of Flutter appsORMFlutterAPP
- 1383. Maximum Performance of a TeamORM
- Performance and High-Availability OptionsORMAI
- Performance --- 前端效能監控ORM前端
- Guideline 2.3.10 - Performance - Accurate MetadataGUIIDEORM
- MySQL Performance Schema詳解MySqlORM
- chrome devtools使用詳解——PerformanceChromedevORM
- performance_schema詳解一ORM
- [Javascript] Using IIFE to improve code performanceJavaScriptORM
- 解密Prompt系列1. Tunning-Free Prompt:GPT2 & GPT3 & LAMA & AutoPrompt解密GPT
- 效能優化篇 - Performance(工具 & api)優化ORMAPI
- An Overview of High Performance Computing and Responsibly Reckless AlgorithmsViewORMGo
- Performance API不完全使用指北ORMAPI
- Oracle中的MD5加密Oracle加密
- Oracle和MySQL md5加密OracleMySql加密
- 使用window.performance分析頁面效能ORM
- godaddy 的 Monitoring performance to make your website fasterGoORMWebAST
- MySQL5.6 PERFORMANCE_SCHEMA 說明MySqlORM
- 前端效能監控-window.performance(轉)前端ORM
- Dynamics CRM Performance Issue when CRM Forms OpeningORM
- improve spring integration read message performance from mqSpringORMMQ
- 前端效能監測,Runtime Performance Debug 技巧前端ORM
- 2022 Flutter Performance 效能除錯工具 devToolsFlutterORM除錯dev
- 5:安裝配置 Oracle18COracle
- .NET Core 效能分析: xUnit.Performance 簡介ORM
- MySQL調優效能監控之performance schemaMySqlORM
- 在FC5上安裝oracle 9204Oracle