作為一個(gè)開發(fā)/測(cè)試人員,或多或少都得和數(shù)據(jù)庫(kù)打交道,而對(duì)數(shù)據(jù)庫(kù)的操作歸根到底都是SQL語句,所有操作到最后都是操作數(shù)據(jù),那么對(duì)sql性能的掌控又成了我們工作中一件非常重要的工作。下面簡(jiǎn)單介紹下一些查看oracle性能的一些實(shí)用方法:
成都創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計(jì),遼陽(yáng)縣網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:遼陽(yáng)縣等地區(qū)。遼陽(yáng)縣做網(wǎng)站價(jià)格咨詢:028-86922220
1、查詢每臺(tái)機(jī)器的連接數(shù)
select?t.MACHINE,count(*)?from?v$session?t?group?by?t.MACHINE
這里所說的每臺(tái)機(jī)器是指每個(gè)連接oracle數(shù)據(jù)庫(kù)的服務(wù)器,每個(gè)服務(wù)器都有配置連接數(shù)據(jù)庫(kù)的連接數(shù),以websphere為例,在數(shù)據(jù)源中,每個(gè)數(shù)據(jù)源都有配置其最大/最小連接數(shù)。
執(zhí)行SQL后,可以看到每個(gè)服務(wù)器連接oracle數(shù)據(jù)庫(kù)的連接數(shù),若某個(gè)服務(wù)器的連接數(shù)非常大,或者已經(jīng)達(dá)到其最大連接數(shù),那么這臺(tái)服務(wù)器上的應(yīng)用可能有問題導(dǎo)致其連接不能正常釋放。
2、查詢每個(gè)連接數(shù)的sql_text
v$session表里存在的連接不是一直都在執(zhí)行操作,如果sql_hash_value為空或者0,則該連接是空閑的,可以查詢哪些連接非空閑,?web3?是機(jī)器名,就是WebSphere?Application?Server?的主機(jī)名。
select?t.sql_hash_value,t.*??from?v$session?t?where?t.MACHINE='web3'?and?t.sql_hash_value!=0
這個(gè)SQL查詢出來的結(jié)果不能看到具體的SQL語句,需要看具體SQL語句的執(zhí)行下面的方法。
3、查詢每個(gè)活動(dòng)的連接執(zhí)行什么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每條記錄不是保存一個(gè)完整的sql,需要以sql_hash_value為關(guān)鍵id,以piece排序,如圖
Username是執(zhí)行SQL的數(shù)據(jù)庫(kù)用戶名,一個(gè)sql_hash_value下的SQL_TEXT組合成一個(gè)完整的SQL語句。這樣就可以看到一個(gè)連接執(zhí)行了哪些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列可以得到占用最多內(nèi)存的sql語句的相關(guān)信息。
V$SQL是內(nèi)存共享SQL區(qū)域中已經(jīng)解析的SQL語句。
該表在SQL性能查看操作中用的比較頻繁的一張表,關(guān)于這個(gè)表的詳細(xì)信息大家可以去?上學(xué)習(xí),介紹得比較詳細(xì)。我這里主要就將該表的常用幾個(gè)操作簡(jiǎn)單介紹一下:
1、列出使用頻率最高的5個(gè)查詢:
select?sql_text,executions
from?(select?sql_text,executions,
rank()?over
(order?by?executions?desc)?exec_rank
from?v$sql)
where?exec_rank?=5;
該查詢結(jié)果列出的是執(zhí)行最頻繁的5個(gè)SQL語句。對(duì)于這種實(shí)用非常頻繁的SQL語句,我們需要對(duì)其進(jìn)行持續(xù)的優(yōu)化以達(dá)到最佳執(zhí)行性能。
2、找出需要大量緩沖讀?。ㄟ壿嬜x)操作的查詢:
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基本是大數(shù)據(jù)量且邏輯復(fù)雜的查詢中會(huì)遇到,對(duì)于這樣的大數(shù)據(jù)量查詢SQL語句更加需要持續(xù)的關(guān)注,并進(jìn)行優(yōu)化。
3、持續(xù)跟蹤有性能影響的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
這個(gè)語句在SQL性能查看中用的比較多,可以明顯的看出哪些SQL會(huì)影響到數(shù)據(jù)庫(kù)性能。
本文主要介紹了使用SQL查詢方式查看oracle數(shù)據(jù)庫(kù)SQL性能的部分常用方法。此外還有許多工具也能實(shí)現(xiàn)SQL性能監(jiān)控,大家可以在網(wǎng)上搜索相關(guān)知識(shí)進(jìn)行學(xué)習(xí)。
轉(zhuǎn)載僅供參考,版權(quán)屬于原作者
這種問題要回答好要求知識(shí)比較全面。
1 從操作系統(tǒng)層次上看
看CPU 內(nèi)存 swqp(交換分區(qū))等使用率
2 從磁盤上看
主要看磁盤讀寫??梢杂胐d測(cè)磁盤讀寫的速度 也可以在業(yè)務(wù)高峰期檢測(cè)磁盤的速率。
3 從數(shù)據(jù)庫(kù)本身來看。
先要看數(shù)據(jù)庫(kù)各個(gè)參數(shù)的值 。 如sga的大小,process的大小,redo日志的個(gè)數(shù)與大小等這些關(guān)系到性能的參數(shù)是否設(shè)置合理。
長(zhǎng)期觀察的方式就是看各個(gè)時(shí)期的AWR報(bào)告。里面有各種性能指標(biāo),以及按執(zhí)行時(shí)間或資源排列的sql ,以及各種等待時(shí)間的排名。從這里面可以掌握數(shù)據(jù)庫(kù)的長(zhǎng)期的性能變化。
即時(shí)觀察的方式就是利用各種sql 查詢 數(shù)據(jù)庫(kù)在當(dāng)前時(shí)間的各個(gè)性能指標(biāo)(AWR報(bào)告里面的各種指標(biāo)也都是通過sql查詢出來的)
還有對(duì)數(shù)據(jù)庫(kù)整體的一個(gè)檢查:
如 表的大小,表是否需要分區(qū)而沒有分區(qū),索引是否創(chuàng)建,索引是否失效,開發(fā)人員寫的sql是否正確使用到了索引,頻繁使用的sql是否有綁定變量,有頻繁大批量增刪改的表是否存在高水位。。。
額 總之,這個(gè)話題涉及的知識(shí)非常多,盡可能多的學(xué)習(xí)一些東西,祝你好運(yùn)。
1、使用兩邊加‘%’號(hào)的查詢,Oracle是不通過索引的,所以查詢效率很低。
例如:select count(*) from lui_user_base t where t.user_name like '%cs%';
2、like '...%'和 like'%...'雖然走了索引,但是效率依然很低。
3、有人說使用如下sql,他的效率提高了10倍,但是數(shù)據(jù)量小的時(shí)候
select count(*) from lui_user_base where rowid in (select rowid from lui_user_base t where t.user_name like '%cs%')
我拿100w跳數(shù)據(jù)做了測(cè)試,效果一般,依然很慢,原因:
select rowid from lui_user_base t where t.user_name like '%cs%' ? 這條sql執(zhí)行很快,那是相當(dāng)?shù)目?,但是放到select count(*) from lui_user_base where rowid in()里后,效率就會(huì)變的很慢了。
4、select count(*) from lui_user_base t where instr(t.user_name,'cs') 0
這種查詢效果很好,速度很快,推薦使用這種。因?yàn)槲覍?duì)oracle內(nèi)部機(jī)制不是很懂,只是對(duì)結(jié)果做了一個(gè)說明。
5、有人說了用全文索引,我看了,步驟挺麻煩,但是是個(gè)不錯(cuò)的方法,留著備用:
對(duì)cmng_custominfo 表中的address字段做全文檢索:
1,在oracle9201中需要?jiǎng)?chuàng)建一個(gè)分詞的東西:
BEGIN
ctx_ddl.create_preference ('SMS_ADDRESS_LEXER', 'CHINESE_LEXER');
--ctx_ddl.create_preference ('my_lexer', 'chinese_vgram_lexer'); 不用
end;
2,創(chuàng)建全文檢索:
CREATE INDEX INX_CUSTOMINFO_ADDR_DOCS ON cmng_custominfo(address) INDEXTYPE IS CTXSYS.CONTEXT PARAMETERS ('LEXER SMS_ADDRESS_LEXER');
3,查詢時(shí)候,使用:
select * from cmng_custominfo where contains (address, '金色新城')1;
4,需要定期進(jìn)行同步和優(yōu)化:
同步:根據(jù)新增記錄的文本內(nèi)容更新全文搜索的索引。
begin
ctx_ddl.sync_index('INX_CUSTOMINFO_ADDR_DOCS');
end;
優(yōu)化:根據(jù)被刪除記錄清除全文搜索索引中的垃圾
begin
ctx_ddl.optimize_index('INX_CUSTOMINFO_ADDR_DOCS', 'FAST');
end;
5,采用job做步驟4中的工作:
1)該功能需要利用oracle的JOB功能來完成
因?yàn)閛racle9I默認(rèn)不啟用JOB功能,所以首先需要增加ORACLE數(shù)據(jù)庫(kù)實(shí)例的JOB配置參數(shù):
job_queue_processes=5
重新啟動(dòng)oracle數(shù)據(jù)庫(kù)服務(wù)和listener服務(wù)。
2)同步 和 優(yōu)化
--同步 sync:
variable jobno number;
BEGIN
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.sync_index(''INX_CUSTOMINFO_ADDR_DOCS'');',
SYSDATE, 'SYSDATE + (1/24/4)');
commit;
END;
--優(yōu)化
variable jobno number;
begin
DBMS_JOB.SUBMIT(:jobno,'ctx_ddl.optimize_index(''INX_CUSTOMINFO_ADDR_DOCS'',''FULL'');', SYSDATE, 'SYSDATE + 1');
commit;
END;
其中, 第一個(gè)job的SYSDATE + (1/24/4)是指每隔15分鐘同步一次,第二個(gè)job的SYSDATE + 1是每隔1天做一次全優(yōu)化。具體的時(shí)間間隔,可以根據(jù)應(yīng)用的需要而定。
6,索引重建
重建索引會(huì)刪除原來的索引,重新生成索引,需要較長(zhǎng)的時(shí)間。
重建索引語法如下:
ALTER INDEX INX_CUSTOMINFO_ADDR_DOCS REBUILD;
據(jù)網(wǎng)上一些用家的體會(huì),oracle重建索引的速度也是比較快的,有一用家這樣描述:
Oracle 的全文檢索建立和維護(hù)索引要比ms sql server都要快得多,筆者的65萬記錄的一個(gè)表建立索引只需要20分鐘,同步一次只需要1分鐘。
因此,也可以考慮用job的辦法定期重建索引。
1:服務(wù)器環(huán)境
操作系統(tǒng):Red Hat Enterprise Linux Server release 5.5 (Tikanga)
CPU:Intel(R) Xeon(R) CPU ? ? ? ? ? E5607 ?@ 2.27GHz ? 8核
內(nèi)存:16G
Mysql:Ver 14.14 Distrib 5.5.21, for Linux (x86_64)
Oracle:Oracle?Database 11g Enterprise Edition Release
詳細(xì)數(shù)據(jù)測(cè)試(操作通過存儲(chǔ)過程完成)
數(shù)據(jù)插入
50并發(fā)Mysql插入性能圖示(橫坐標(biāo):當(dāng)前數(shù)據(jù)總量,縱坐標(biāo):每秒執(zhí)行次數(shù)){平均值:4841.98}
50并發(fā)Oracle插入性能圖示(橫坐標(biāo):執(zhí)行時(shí)間(秒),縱坐標(biāo):每秒執(zhí)行次數(shù)){平均值:1459.408}
oracle sql性能測(cè)試工具
Oracle ORION:存儲(chǔ)系統(tǒng)性能測(cè)試工具 - Oracle數(shù)據(jù)庫(kù)欄目 ...
Oracle ORION:存儲(chǔ)系統(tǒng)性能測(cè)試工具一 定義 ORION(Oracle I/O Calibration Tool)是Oracle提供的、用于測(cè)試存儲(chǔ)系統(tǒng)性能瓶頸 由于 ORION ...
ORACLE 免費(fèi)壓力測(cè)試工具--hammerora的使用過程 - 寧?kù)o ...
2009-7-28?·?從創(chuàng)作者對(duì)這個(gè)工具的標(biāo)題描述可以看出,Hammerora是一款Oracle數(shù)據(jù)庫(kù)負(fù)載測(cè)試工具。該工具可以在Oracle 8i、9i ... TCL語言已經(jīng)用來提供高性能的和Oracle …
ORACLE壓力測(cè)試工具orion_oracle | 幫客之家
ORACLE壓力測(cè)試工具orion 1,功能簡(jiǎn)介 ORION (Oracle I/O Calibration Tool) 是校準(zhǔn)用于 Oracle 數(shù)據(jù)庫(kù)的存儲(chǔ)系統(tǒng) I/O 性能的獨(dú)立工具 。校準(zhǔn)結(jié)果對(duì)于了解 首頁(yè) 編程 前端 ...
Microsoft SQL Server 和 Oracle 數(shù)據(jù)庫(kù)的比較
性能測(cè)試 先前版本 解決方案 成功案例 針對(duì)各種需求 應(yīng)用程序開發(fā) 商業(yè)智能 規(guī)范 ... SQL Server Oracle 11g 性能 與擴(kuò)展性 安全性 (低危險(xiǎn)) 開發(fā)效率 商業(yè)智能* 總擁有 ...
Oracle PL/SQL 性能分析工具 profiler 說明 - 推酷
一.說明 Oracle提供了profiler工具包,利用該工具包可以查看PL/SQL執(zhí)行過程中各模塊的性能??梢詮腗OS上下載該腳本: Implementing andUsing the PL/SQL ...
oracle性能測(cè)試工具 - 下載頻道 - CSDN.NET
oracle性能測(cè)試工具 cerato3132009-10-09 上傳 主要用于測(cè)試oracle數(shù)據(jù)庫(kù)的讀寫性能,尤其是在有磁盤陣列的情況下 ... SQL 入門經(jīng)典 2015年全國(guó)最新省市區(qū)鎮(zhèn)(街道)四級(jí) ...
Oracle性能相關(guān)常用腳本(SQL) - 免費(fèi)軟件測(cè)試工具-澤眾 ...
在缺乏的可視化工具來監(jiān)控?cái)?shù)據(jù)庫(kù)性能的情形下,常用的腳本就派上用場(chǎng)了,下面提供幾個(gè)關(guān)于Oracle性能相關(guān)的腳本供大家參考。
Orion - oracle提供的測(cè)試io性能的工具-dbs101-ITPUB博客
Orion是oracle提供的測(cè)試io性能的工具。它可以用來模擬Oracle數(shù)據(jù)庫(kù)IO,也可以用來仿真ASM的條帶化的功能。 Orion可以支持下列IO負(fù)載 1. 小的隨機(jī)的IO:OLTP ...
Oracle性能測(cè)試 - 愛程序網(wǎng)
Oracle性能測(cè)試 2012-01-18 17:03 本站整理 瀏覽(327) 輕量型測(cè)試工具JMeter1、在jmeter網(wǎng)站下載軟件,目前最新版為jmeter ... .live.com/embed?cid重量型測(cè)試工具 測(cè)試 ...
數(shù)據(jù)庫(kù)優(yōu)化實(shí)踐【性能檢測(cè)工具篇】 - SQL Server(mssql ...
第八步:使用SQL事件探查器和性能監(jiān)控工具 有效地診斷性能問題 在SQL Server應(yīng)用領(lǐng)域SQL事件探查器可能是最著名的性能故障排除工具,大多數(shù)情況下,當(dāng)?shù)玫?...