作為乙個開發/測試人員,或多或少都得和資料庫打交道,而對資料庫的操作歸根到底都是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...