資料庫SQL效能查詢

2021-07-05 22:10:16 字數 2301 閱讀 6623

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

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

select t.machine,count(*) from v$session t group by t.machine

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

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

2、查詢每個連線數的sql_text

select t.sql_hash_value,t.*  from v$session t where t.machine='web3' and t.sql_hash_value!=0

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

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

select sid,username,sql_hash_value,b.sql_text

from v$session a,v$sqltext b 

where a.sql_hash_value = b.hash_value and a.machine='web3'

order by sid,username,sql_hash_value,b.piece

order by這句話的作用在於,sql_text每條記錄不是儲存乙個完整的sql,需要以sql_hash_value為關鍵id,以piece排序;

username是執行sql的資料庫使用者名稱,乙個sql_hash_value下的sql_text組合成乙個完整的sql語句。這樣就可以看到乙個連線執行了哪些sql。

4、.從v$sqlarea中查詢最占用資源的查詢 

select b.username username,a.disk_reads reads, a.executions exec,

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

a.sql_text statement

from  v$sqlarea a,dba_users b

where a.parsing_user_id=b.user_id

and a.disk_reads > 100000

order by a.disk_reads desc; 

用buffer_gets列來替換disk_reads列可以得到占用最多記憶體的sql語句的相關資訊。 

v$sql是記憶體共享sql區域中已經解析的sql語句。

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

select sql_text,executions 

from (select sql_text,executions,

rank() over 

(order by executions desc) exec_rank 

from v$sql) 

where exec_rank <=5; 

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

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

select buffer_gets,sql_text 

from (select sql_text,buffer_gets, 

dense_rank() over 

(order by buffer_gets desc) buffer_gets_rank 

from v$sql) 

where buffer_gets_rank<=5; 

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

3、持續跟蹤有效能影響的sql。

select * from (

select parsing_user_id,executions,sorts,

command_type,disk_reads,sql_text from v$sqlarea

order by disk_reads desc

) where rownum<10

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

改進資料庫效能 SQL查詢優化(1)

oracle效能調優 oracle database 11g資料庫管理藝術 第19章 改進資料庫i你能 sql查詢優化 效能調優是dba花費時間最多的乙個領域,主要包括 編寫高效的sql語句 分配合適的計算資源,以及分析系統中的等待事件和資源爭用情況。oracle建議在設計資料庫時遵循以下步驟 1....

資料庫SQL效能優化

如果訪問量巨大,除了sql優化外,還會涉及到分庫分表 讀寫分離 利用資料庫中介軟體來解決 1.對查詢進行優化,要盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表...

資料庫查詢效能 LinqDB vs Sql查詢

使用linqdb查詢sqlite資料庫資料,不管是大資料還是少量的資料,感覺特別耗時,尤其是首次查詢 乙個含有2.7萬條資料的資料表 首次查詢 二次查詢 我們來嘗試優化一下,使用sql語句查詢 sql連線字串 1 var dbrelativepath dbs englishdict.db3 2var...