當前位置:首頁 » 編程語言 » oraclesql性能分析
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oraclesql性能分析

發布時間: 2023-02-27 12:17:56

㈠ 如何檢查oracle資料庫性能

oracle的性能判斷需要綜合資料庫的多個運行指標來判斷:
1、進程數量和佔用cpu:這個主要看有沒有長時間佔用cpu的進行。通常會判斷大出sql,需要優化;這個可以用執行計劃或者awr報告查看;
2、內存佔用:主要用系統命令查看ora_佔用和系統總內存的比例,swap的使用率;通常swap使用率低就沒事;這個主要使用系統命令;
3、磁碟佔用率:防止磁碟空間不足,需要的主要在系統和用戶表空間、RMAN等操作上;這個主要使用系統命令;RMAN命令查看

㈡ 如何查詢oracle 資料庫性能,sql資源佔用

作為一個開發/測試人員,或多或少都得和資料庫打交道,而對資料庫的操作歸根到底都是SQL語句,所有操作到最後都是操作數據,那麼對sql性能的掌控又成了我們工作中一件非常重要的工作。下面簡單介紹下一些查看oracle性能的一些實用方法:

1、查詢每台機器的連接數

selectt.MACHINE,count(*)fromv$sessiontgroupbyt.MACHINE

這里所說的每台機器是指每個連接oracle資料庫的伺服器,每個伺服器都有配置連接資料庫的連接數,以websphere為例,在數據源中,每個數據源都有配置其最大/最小連接數。

執行SQL後,可以看到每個伺服器連接oracle資料庫的連接數,若某個伺服器的連接數非常大,或者已經達到其最大連接數,那麼這台伺服器上的應用可能有問題導致其連接不能正常釋放。

2、查詢每個連接數的sql_text

v$session表裡存在的連接不是一直都在執行操作,如果sql_hash_value為空或者0,則該連接是空閑的,可以查詢哪些連接非空閑,web3是機器名,就是WebSphereApplicationServer的主機名。

selectt.sql_hash_value,t.*fromv$sessiontwheret.MACHINE='web3'andt.sql_hash_value!=0

這個SQL查詢出來的結果不能看到具體的SQL語句,需要看具體SQL語句的執行下面的方法。

3、查詢每個活動的連接執行什麼sql

selectsid,username,sql_hash_value,b.sql_text

fromv$sessiona,v$sqltextb

wherea.sql_hash_value=b.HASH_VALUEanda.MACHINE='web3'

orderbysid,username,sql_hash_value,b.piece

orderby這句話的作用在於,sql_text每條記錄不是保存一個完整的sql,需要以sql_hash_value為關鍵id,以piece排序,如圖

Username是執行SQL的資料庫用戶名,一個sql_hash_value下的SQL_TEXT組合成一個完整的SQL語句。這樣就可以看到一個連接執行了哪些SQL。

4、.從V$SQLAREA中查詢最佔用資源的查詢

selectb.usernameusername,a.disk_readsreads,a.executionsexec,

a.disk_reads/decode(a.executions,0,1,a.executions)rds_exec_ratio,

a.sql_textStatement

fromv$sqlareaa,dba_usersb

wherea.parsing_user_id=b.user_id

anda.disk_reads>100000

orderbya.disk_readsdesc;

用buffer_gets列來替換disk_reads列可以得到佔用最多內存的sql語句的相關信息。

V$SQL是內存共享SQL區域中已經解析的SQL語句。

該表在SQL性能查看操作中用的比較頻繁的一張表,關於這個表的詳細信息大家可以去http://apps.hi..com/share/detail/299920#上學習,介紹得比較詳細。我這里主要就將該表的常用幾個操作簡單介紹一下:

1、列出使用頻率最高的5個查詢:

selectsql_text,executions

from(selectsql_text,executions,

rank()over

(orderbyexecutionsdesc)exec_rank

fromv$sql)

whereexec_rank<=5;

該查詢結果列出的是執行最頻繁的5個SQL語句。對於這種實用非常頻繁的SQL語句,我們需要對其進行持續的優化以達到最佳執行性能。

2、找出需要大量緩沖讀取(邏輯讀)操作的查詢:

selectbuffer_gets,sql_text

from(selectsql_text,buffer_gets,

dense_rank()over

(orderbybuffer_getsdesc)buffer_gets_rank

fromv$sql)

wherebuffer_gets_rank<=5;

這種需要大量緩沖讀取(邏輯讀)操作的SQL基本是大數據量且邏輯復雜的查詢中會遇到,對於這樣的大數據量查詢SQL語句更加需要持續的關注,並進行優化。

3、持續跟蹤有性能影響的SQL。

SELECT*FROM(

SELECTPARSING_USER_ID,EXECUTIONS,SORTS,

COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlarea

ORDERBYdisk_readsDESC

)

WHEREROWNUM<10

這個語句在SQL性能查看中用的比較多,可以明顯的看出哪些SQL會影響到資料庫性能。

本文主要介紹了使用SQL查詢方式查看oracle資料庫SQL性能的部分常用方法。此外還有許多工具也能實現SQL性能監控,大家可以在網上搜索相關知識進行學習。


轉載僅供參考,版權屬於原作者

㈢ 如何檢查oracle資料庫性能

這種問題要回答好要求知識比較全面。
1 從操作系統層次上看
看CPU 內存 swqp(交換分區)等使用率
2 從磁碟上看
主要看磁碟讀寫。可以用dd測磁碟讀寫的速度 也可以在業務高峰期檢測磁碟的速率。
3 從資料庫本身來看。
先要看資料庫各個參數的值 。 如sga的大小,process的大小,redo日誌的個數與大小等這些關繫到性能的參數是否設置合理。
長期觀察的方式就是看各個時期的AWR報告。裡面有各種性能指標,以及按執行時間或資源排列的sql ,以及各種等待時間的排名。從這裡面可以掌握資料庫的長期的性能變化。
即時觀察的方式就是利用各種sql 查詢 資料庫在當前時間的各個性能指標(AWR報告裡面的各種指標也都是通過sql查詢出來的)
還有對資料庫整體的一個檢查:
如 表的大小,表是否需要分區而沒有分區,索引是否創建,索引是否失效,開發人員寫的sql是否正確使用到了索引,頻繁使用的sql是否有綁定變數,有頻繁大批量增刪改的表是否存在高水位。。。
額 總之,這個話題涉及的知識非常多,盡可能多的學習一些東西,祝你好運。