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

sql性能監控指令

發布時間: 2022-04-03 05:03:28

⑴ 怎樣最好的實現sqlServer的性能監控

查看sql緩存中 sql的運行時間,然後對運行時間長的sql,進行優化

⑵ SQL SERVER 2008 性能監控 細節咨詢;

以我的電腦為例(win7旗艦版)

運行—perfmon.msc打開性能監視器,新增,下面就有你要的計數器

⑶ 如何監視和查看sql server的性能

監視和查看sql server的性能步驟:
1.打開sql server studio management,打開"工具"-"sql server profiler";

2.點擊連接;

3.點擊運行;

4.可以看到捕捉到的一些訪問資料庫的事件,其中有讀寫,點用cpu,持續時間等信息可以參考;

4.點擊某個事件,可以查看具體執行了sql腳本等,進一步分析相關邏輯。

⑷ 如何監控某個資料庫用戶的SQL執行效率

SQL SERVER PROFILER Trace然後FILTER SELECT語句。
如果是2008或以上的話可以考慮用Database audit.

但是使用這些功能對資料庫性能都會產生影響,要注意。

⑸ sql server性能監控指令~~

1. 監控事例的等待

select event,sum(decode(wait_Time,0,0,1)) "Prev",

sum(decode(wait_Time,0,1,0)) "Curr",count(*) "Tot"

from v$session_Wait

group by event order by 4;

2. 回滾段的爭用情況

select name, waits, gets, waits/gets "Ratio"

from v$rollstat a, v$rollname b

where a.usn = b.usn;

3. 監控表空間的 I/O 比例

select df.tablespace_name name,df.file_name "file",f.phyrds pyr,

f.phyblkrd pbr,f.phywrts pyw, f.phyblkwrt pbw

from v$filestat f, dba_data_files df

where f.file# = df.file_id

order by df.tablespace_name;

4. 監控文件系統的 I/O 比例

select substr(a.file#,1,2) "#", substr(a.name,1,30) "Name",

a.status, a.bytes, b.phyrds, b.phywrts

from v$datafile a, v$filestat b

where a.file# = b.file#;

5.在某個用戶下找所有的索引

select user_indexes.table_name, user_indexes.index_name,uniqueness, column_name

from user_ind_columns, user_indexes

where user_ind_columns.index_name = user_indexes.index_name

and user_ind_columns.table_name = user_indexes.table_name

order by user_indexes.table_type, user_indexes.table_name,

user_indexes.index_name, column_position;

6. 監控 SGA 的命中率

select a.value + b.value "logical_reads", c.value "phys_reads",

round(100 * ((a.value+b.value)-c.value) / (a.value+b.value)) "BUFFER HIT RATIO"

from v$sysstat a, v$sysstat b, v$sysstat c

where a.statistic# = 38 and b.statistic# = 39

and c.statistic# = 40;

7. 監控 SGA 中字典緩沖區的命中率

select parameter, gets,Getmisses , getmisses/(gets+getmisses)*100 "miss ratio",

(1-(sum(getmisses)/ (sum(gets)+sum(getmisses))))*100 "Hit ratio"

from v$rowcache

where gets+getmisses <>0

group by parameter, gets, getmisses;

8. 監控 SGA 中共享緩存區的命中率,應該小於1%

select sum(pins) "Total Pins", sum(reloads) "Total Reloads",

sum(reloads)/sum(pins) *100 libcache

from v$librarycache;

select sum(pinhits-reloads)/sum(pins) "hit radio",sum(reloads)/sum(pins) "reload percent"

from v$librarycache;

9. 顯示所有資料庫對象的類別和大小

select count(name) num_instances ,type ,sum(source_size) source_size ,

sum(parsed_size) parsed_size ,sum(code_size) code_size ,sum(error_size) error_size,

sum(source_size) +sum(parsed_size) +sum(code_size) +sum(error_size) size_required

from dba_object_size

group by type order by 2;

10. 監控 SGA 中重做日誌緩存區的命中率,應該小於1%

SELECT name, gets, misses, immediate_gets, immediate_misses,

Decode(gets,0,0,misses/gets*100) ratio1,

Decode(immediate_gets+immediate_misses,0,0,

immediate_misses/(immediate_gets+immediate_misses)*100) ratio2

FROM v$latch WHERE name IN ('redo allocation', 'redo ');

11.監控內存和硬碟的排序比率,最好使它小於 .10,增加 sort_area_size

SELECT name, value FROM v$sysstat WHERE name IN ('sorts (memory)', 'sorts (disk)');

12. 監控當前資料庫誰在運行什麼SQL語句

SELECT osuser, username, sql_text from v$session a, v$sqltext b

where a.sql_address =b.address order by address, piece;

13. 監控字典緩沖區

SELECT (SUM(PINS - RELOADS)) / SUM(PINS) "LIB CACHE" FROM V$LIBRARYCACHE;

SELECT (SUM(GETS - GETMISSES - USAGE - FIXED)) / SUM(GETS) "ROW CACHE" FROM V$ROWCACHE;

SELECT SUM(PINS) "EXECUTIONS", SUM(RELOADS) "CACHE MISSES WHILE EXECUTING" FROM V$LIBRARYCACHE;

後者除以前者,此比率小於1%,接近0%為好。

SELECT SUM(GETS) "DICTIONARY GETS",SUM(GETMISSES) "DICTIONARY CACHE GET MISSES"

FROM V$ROWCACHE

14. 找ORACLE字元集

select * from sys.props$ where name='NLS_CHARACTERSET';

15. 監控 MTS

select busy/(busy+idle) "shared servers busy" from v$dispatcher;

此值大於0.5時,參數需加大

select sum(wait)/sum(totalq) "dispatcher waits" from v$queue where type='dispatcher';

select count(*) from v$dispatcher;

select servers_highwater from v$mts;

servers_highwater接近mts_max_servers時,參數需加大

⑹ SQLServer2005性能監測與優化的介紹

《SQL Server2005性能監測與優化》由袁鵬飛 鍾發英 馬娜 所著,本書從資料庫的基本工作原理入手,系統介紹了SQL Server資料庫體系結構、索引優化、SQL語句優化、性能優化工具、系統存儲過程、系統表、系統視圖、分區技術、死鎖處理等,最後幫助讀者設計實現兩個資料庫性能分析和監測工具

⑺ 如何查詢Oracle性能監控

1.查看臨時表空間使用情況

Select
f.tablespace_name
,sum(f.bytes_free + f.bytes_used)
/1024/1024/1024 "total GB"
,sum((f.bytes_free + f.bytes_used) - nvl(p.bytes_used, 0))
/1024/1024/1024 "Free GB"
,sum(nvl(p.bytes_used, 0))
/1024/1024/1024 "Used GB"
from sys.v_$temp_space_header f, dba_temp_files d, sys.v_$temp_extent_pool p
where f.tablespace_name(+) = d.tablespace_name
and f.file_id(+) = d.file_id
and p.file_id(+) = d.file_id
group by
f.tablespace_name

2.查看使用臨時表空間的SQL

Select se.username,
se.sid,
su.extents,
su.blocks * to_number(rtrim(p.value)) as Space,
tablespace,
segtype,
sql_text
from v$sort_usage su, v$parameter p, v$session se, v$sql s
where p.name = 'db_block_size'
and su.session_addr = se.saddr
and s.hash_value = su.sqlhash
and s.address = su.sqladdr
order by se.username, se.sid

3.收縮臨時表空間

alter tablespace temp shrink space;

alter tablespace temp shrink tempfile ''

4.重建索引

alter index PK_CROSSRELATION rebuild;

5.查看錶空間使用情況

SELECT UPPER(F.TABLESPACE_NAME) "表空間名",
D.TOT_GROOTTE_MB "表空間大小(M)",
D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空間(M)",
TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2),'990.99') || '%' "使用比",
F.TOTAL_BYTES "空閑空間(M)",
F.MAX_BYTES "最大塊(M)"
FROM (SELECT TABLESPACE_NAME,
ROUND(SUM(BYTES) / (1024 * 1024), 2) TOTAL_BYTES,
ROUND(MAX(BYTES) / (1024 * 1024), 2) MAX_BYTES
FROM SYS.DBA_FREE_SPACE
GROUP BY TABLESPACE_NAME) F,
(SELECT DD.TABLESPACE_NAME,
ROUND(SUM(DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB
FROM SYS.DBA_DATA_FILES DD
GROUP BY DD.TABLESPACE_NAME) D
WHERE D.TABLESPACE_NAME = F.TABLESPACE_NAME
ORDER BY 1;

6.查詢表空間的總容量

select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name;

7. 查詢表空間使用率

select total.tablespace_name,
round(total.MB, 2) as Total_MB,考試大論壇
round(total.MB - free.MB, 2) as Used_MB,
round((1 - free.MB / total.MB) * 100, 2) || '%' as Used_Pct
from (select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_free_space
group by tablespace_name) free,
(select tablespace_name, sum(bytes) / 1024 / 1024 as MB
from dba_data_files
group by tablespace_name) total
where free.tablespace_name = total.tablespace_name;

8. 查找當前表級鎖的SQL如下:

select sess.sid,
sess.serial#,
lo.oracle_username,
lo.os_user_name,
ao.object_name,
lo.locked_mode
from v$locked_object lo,
dba_objects ao,
v$session sess
where ao.object_id = lo.object_id and lo.session_id = sess.sid;

殺掉鎖表進程:
alter system kill session '436,35123';


9.監控當前資料庫誰在運行什麼SQL語句
select osuser, username, sql_text
from v$session a, v$sqltext b
where a.sql_address =b.address order by address, piece;


10.找使用CPU多的用戶session
select a.sid,spid,status,substr(a.program,1,40) prog, a.terminal,osuser,value/60/100 value
from v$session a,v$process b,v$sesstat c
where c.statistic#=12 and
c.sid=a.sid and
a.paddr=b.addr
order by value desc;

11.查看死鎖信息
SELECT (SELECT username
FROM v$session
WHERE SID = a.SID) blocker, a.SID, 'is blocking',
(SELECT username
FROM v$session
WHERE SID = b.SID) blockee, b.SID
FROM v$lock a, v$lock b
WHERE a.BLOCK = 1 AND b.request > 0 AND a.id1 = b.id1 AND a.id2 = b.id2;

12.具有最高等待的對象
SELECT o.OWNER,o.object_name, o.object_type, a.event,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
GROUP BY o.OWNER,o.object_name, o.object_type, a.event
ORDER BY total_wait_time DESC;


13.查看具有最高等待的對象

SELECT a.session_id, s.osuser, s.machine, s.program, o.owner, o.object_name,
o.object_type, a.event,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, dba_objects o, v$session s
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.current_obj# = o.object_id
AND a.session_id = s.SID
GROUP BY o.owner,
o.object_name,
o.object_type,
a.event,
a.session_id,
s.program,
s.machine,
s.osuser
ORDER BY total_wait_time DESC;

14.查看等待最多的SQL

SELECT a.program, a.session_id, a.user_id, d.username, s.sql_text,
SUM (a.wait_time + a.time_waited) total_wait_time
FROM v$active_session_history a, v$sqlarea s, dba_users d
WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE
AND a.sql_id = s.sql_id
AND a.user_id = d.user_id
GROUP BY a.program, a.session_id, a.user_id, s.sql_text, d.username;

15.顯示正在等待鎖的所有會話

SELECT * FROM DBA_WAITERS;

⑻ 根據mysql慢日誌監控SQL語句執行效率

根據mysql慢日誌監控SQL語句執行效率
啟用MySQL的log-slow-queries(慢查詢記錄)。
在Linux環境下先要找到my.cnf文件(一般在/etc/mysql/),然後可能會發現該文件修改後無法保存,原因是你沒有相應的許可權,可以從屬性中看到該文件的所有者是root,這時要先以root的身份打開它:
sudo
nautilus
/etc/mysql
接著再打開my.cnf文件然後找到[mysqld]標簽在下面加上:
log-slow-queries=/path/slow.log
–慢日誌保存路徑,該文件自己新建
long_query_time=2
–超過2秒的查詢
log-queries-not-using-indexes
–記錄沒有使用索引的查詢
保存,關閉。然後如果重啟MySQL的話會碰到這樣的提示:world-writable
config
file

etc
my.cnf'
is
ignored
這時需要你再運行這個代碼:
chmod
644
/etc/my.cnf
–644表示rw-r–r–
然後再重啟服務就OK了。
但是要注意的是:log-slow-queries=/path/slow.log為慢查詢日誌存放的地方,而這個目錄要有MySQL的運行帳號的可寫許可權,一般都將這個目錄設置為MySQL的數據存放目錄。
我是這么做的:先用root用戶進到MySQL的數據存放目錄(一般是/var/lib/mysql),新建一個slow.log文件(root用戶能保證有許可權新建,再運行chmod
644)。然後更改該文件的所有者和所在組:
chown
mysql運行帳戶的名字(可以看同文件夾中其他文件的所有者和組)+小數點+組名(方法同用戶名)
/path/slow.log
或者:
chown
mysql運行帳戶的名字(可以看同文件夾中其他文件的所有者和組)
/path/slow.log
chgrp
組名(方法同用戶名)
/path/slow.log
這樣才能保證MySQL能往slow.log中寫日誌。

⑼ sql server資料庫性能監控指令,請大蝦幫忙~~

連接到資料庫的會話數量,數據文件/日誌文件大小這兩個是可以直接從界面上設置,別的就不知道了,沒用過希望高手進來,頂上哈哈。