作為一個開發/測試人員,或多或少都得和數據庫打交道,而對數據庫的操作歸根到底都是SQL語句,所有操作到最后都是操作數據,那么對sql性能的掌控又成了我們工作中一件非常重要的工作。下面簡單介紹下一些查看oracle性能的一些實用方法:
創新互聯建站是一家專業提供臨川企業網站建設,專注與成都做網站、網站制作、H5網站設計、小程序制作等業務。10年已為臨川眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。
1、查詢每臺機器的連接數
select?t.MACHINE,count(*)?from?v$session?t?group?by?t.MACHINE
這里所說的每臺機器是指每個連接oracle數據庫的服務器,每個服務器都有配置連接數據庫的連接數,以websphere為例,在數據源中,每個數據源都有配置其最大/最小連接數。
執行SQL后,可以看到每個服務器連接oracle數據庫的連接數,若某個服務器的連接數非常大,或者已經達到其最大連接數,那么這臺服務器上的應用可能有問題導致其連接不能正常釋放。
2、查詢每個連接數的sql_text
v$session表里存在的連接不是一直都在執行操作,如果sql_hash_value為空或者0,則該連接是空閑的,可以查詢哪些連接非空閑,?web3?是機器名,就是WebSphere?Application?Server?的主機名。
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語句。
該表在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?ROWNUM10
這個語句在SQL性能查看中用的比較多,可以明顯的看出哪些SQL會影響到數據庫性能。
本文主要介紹了使用SQL查詢方式查看oracle數據庫SQL性能的部分常用方法。此外還有許多工具也能實現SQL性能監控,大家可以在網上搜索相關知識進行學習。
轉載僅供參考,版權屬于原作者
一條查詢語句是沒戲了,只能通過腳本
先建一個數組,然后建一個split函數,用,號分隔把值拆出來,然后對沒一行數據輪詢一遍,最后將結果記錄在一個索引表里面,只能這樣,單條語句沒戲的
你說的是redolog的切換吧,可以通過alert日志查看到。
可以通過awk(操作系統級別)語句找到alert日志的redolog切換日志的內容和時間,然后進行判斷。
oracle怎么查看數據庫的訪問量
可直接在 v$session視圖中查詢。
語句如:
select * from v$session where username='用戶名';
其中用戶名應為英文大寫字母。
1 在應用層設計和記錄表的訪問量
2 數據庫級別的觸發器--查查資料
如果使用監控視圖,行不通,上面2個方法可以試試,1 要更好些!
對于你的要求,應該是這樣
select count(id) from 表 where id = '1'
但是如果你需要查詢表id字段中所有數據出現的次數,那需要進行分組查詢:
select id,count(id) as 出現次數 from 表 group by id
網頁標題:oracle如何查詢訪問頻率,oracle的查詢訪問效率排序
網站鏈接:http://vcdvsql.cn/article28/hssjjp.html
成都網站建設公司_創新互聯,為您提供定制網站、網站維護、面包屑導航、網站改版、企業網站制作、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯