《数据库性能瓶颈分析思路》由会员分享,可在线阅读,更多相关《数据库性能瓶颈分析思路(4页珍藏版)》请在金锄头文库上搜索。
1、DB性能瓶颈分析思路在性能分析过程中,经常遇到性能瓶颈出现在SQL的情况,此类问题通常可以分为两大类场景:一是SQL自身性能差导致的慢,如索引缺失、索引失效、统计信息不准确、SQL过于复杂等;二是由于外部原因等待导致的SQL执行慢,如某些系统资源导致的等待、数据资源争用导致的会话阻塞等。对于SQL慢的情况,通常可以采用会话跟踪+单独执行验证的方式进行分析。单独执行也就是将慢的SQL拿到plsql、ssms等客户端工具执行看其响应情况;会话跟踪即在SQL执行过程中使用DBSQLMonitor工具跟踪数据库会话,查看SQL执行时段的会话状态及等待类型。跟踪思路:(1)问题跟踪开启DBSQLMoni
2、tor,设置跟踪所有会话,监控时间间隔5s,如果目标SQL单次执行耗时较短,可以通过缩短监控时间间隔或多次验证方式进行跟踪。此处以DBSQLMonitor(数据库SQL监视工具的下载地址http:/ t.spid, t.kpid, t.blocked, t.status, t.lastwaittype, t.waitresource, t.waittime , DB_NAME(t.dbid) DbName, t.last_batch, t.loginame, t.program_name, t.hostname, t.hostprocess , t.cmd, t.stmt_start, t.s
3、tmt_end, t.request_id, dc.textfrom master.sys.sysprocesses t outer apply master.sys.dm_exec_sql_text(t.sql_handle) dcwhere t.spid = 50(2)-OracleSession(v$session)select se.inst_id, se.SID, se.SERIAL#, se.Status, se.Event,se.taddr,se.process, se.BLOCKING_SESSION, se.blocking_instance,se.BLOCKING_SESS
4、ION_STATUS , se.USERNAME, se.MACHINE, se.PROGRAM, se.sql_exec_start, se.seconds_in_wait , NVL(s1.SQL_TEXT, s2.SQL_TEXT) AS sql_textfrom gv$session se left join gv$sql s1 on se.inst_id = s1.inst_id and se.SQL_ID = s1.SQL_ID and se.sql_child_number = s1.child_number left join gv$sql s2 on se.inst_id =
5、 s2.inst_id and se.PREV_SQL_ID = s2.SQL_ID and se.prev_child_number = s2.child_numberwhere -se.status!=INACTIVE andand se.program=JDBC Thin Clientorder by se.blocking_session,se.sid;-se.machine(3)-pgsession(pg_stat_activity)selectpid,array_to_string(pg_blocking_pids(pid),)blocked,state,wait_event,wa
6、it_event_type,current_timestamp-query_startASruntime,datname,usename,application_name,client_addr,client_port,query_start,queryfrompg_stat_activity;(4)-DM session(V$SESSIONS)selectSF_GET_EP_SEQNO(A.rowid),A.SESS_ID,A.SQL_TEXT,A.STATE,A.N_STMT,A.SEQ_NO,A.CURR_SCH,A.USER_NAME,A.TRX_ID,A.CREATE_TIME,A.
7、CLNT_TYPE,A.TIME_ZONE,A.CHK_CONS,A.CHK_IDENT,A.RDONLY,A.INS_NULL,A.COMPILE_FLAG,A.AUTO_CMT,A.DDL_AUTOCMT,A.RS_FOR_QRY,A.CHK_NET,A.ISO_LEVEL,A.CLNT_HOST,A.APPNAME,A.OSNAME,A.CONN_TYPE,B.PROTOCOL_TYPE,B.IP_ADDR, A.CONNECTED,A.PORT_TYPE,A.SRC_SITE,A.MAL_IDFROM SYS.V$SESSIONS A ,SYS.V$CONNECT Bwhere A.Sess_id= B.SADDR ORDER BY SF_GET_EP_SEQNO(A.rowid),A.Sess_id4