1. 程式人生 > >檢視執行計劃的常用方法

檢視執行計劃的常用方法

1.autotrace

set autotrace off

不產生autotrace報告,預設值

set autotrace on explain

autotrace報告只展示最優的執行方式(optimizer execution path)

SQL> set autotrace on explain;

插入資料測試是否執行了sql

SQL> insert into scott.emp values('5566','explain','','','','','','');

1 row created.

已經表明執行了sql

只展示了執行計劃

Execution Plan

----------------------------------------------------------

---------------------------------------------------------------------------------

| Id | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time  |

---------------------------------------------------------------------------------

|   0 | INSERT STATEMENT  |    |     1 |  100 |     1   (0)| ss00:00:01 |

|   1 | LOAD TABLE CONVENTIONAL | EMP |      |      |          |            |

---------------------------------------------------------------------------------

SQL> select * from scott.emp whereempno=5566;

     EMPNO ENAME      JOB          MGR HIREDATE      SAL       COMM    DEPTNO

---------- ---------- --------- ------------------- ---------- ---------- ----------

     5566 explain

Execution Plan

----------------------------------------------------------

Plan hash value: 2949544139

--------------------------------------------------------------------------------------

| Id | Operation             | Name  | Rows  | Bytes | Cost (%CPU)|Time     |

--------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |           |        1|      87 |        2  (0)| 00:00:01 |

|   1 | TABLE ACCESS BY INDEX ROWID| EMP   |     1 |       87 |        2  (0)| 00:00:01 |

|*  2 |  INDEX UNIQUE SCAN        | PK_EMP |      1 |          |        1  (0)| 00:00:01 |

--------------------------------------------------------------------------------------

Predicate Information (identified byoperation id):

---------------------------------------------------

   2- access("EMPNO"=5566)

set autotrace on statistics

autotrace報告sql執行統計資訊(SQL statement execution statistics. )

SQL> set autotrace on statistics;

SQL> insert into scott.empvalues('6677','statistics','','','','','','');

1 row created.

說明執行了sql

只展示sql執行的統計資訊

Statistics

----------------------------------------------------------

        52 recursive calls

         5  dbblock gets

        80 consistent gets

         0 physical reads

       520  redo size

       839  bytes sent via SQL*Net to client

       826  bytes received via SQL*Net from client

         3 SQL*Net roundtrips to/from client

        10 sorts (memory)

         0 sorts (disk)

         1  rows processed

SQL> select * from scott.emp whereempno=6677;

     EMPNO ENAME      JOB          MGR HIREDATE      SAL       COMM    DEPTNO

---------- ---------- --------- ------------------- ---------- ---------- ----------

     6677 statistics

Statistics

----------------------------------------------------------

         1 recursive calls

         0  dbblock gets

         2  consistent gets

         0 physical reads

         0  redosize

       869  bytes sent via SQL*Net to client

       512  bytes received via SQL*Net from client

         1 SQL*Net roundtrips to/from client

         0 sorts (memory)

         0 sorts (disk)

         1  rows processed 

set autotrace on

autotrace報告包含了最優執行方式和sql執行的資訊

SQL> set autotraceon;

SQL> insert into scott.emp  values('8899','on','','','','','','');

1 row created.

相當於set autotrace on explainset autotrace on statistics的和,既輸出執行計劃,也輸出統計資訊,同時也執行sql

Execution Plan

----------------------------------------------------------

---------------------------------------------------------------------------------

| Id | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time  |

---------------------------------------------------------------------------------

|   0 | INSERT STATEMENT  |    |     1 |  100 |     1   (0)| 00:00:01 |

|   1 | LOAD TABLE CONVENTIONAL | EMP |      |      |          |            |

---------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

        45 recursive calls

         5  dbblock gets

        77 consistent gets

         0 physical reads

       512  redo size

       839  bytes sent via SQL*Net to client

       816  bytes received via SQL*Net from client

         3 SQL*Net roundtrips to/from client

        10 sorts (memory)

         0 sorts (disk)

         1  rows processed

SQL> select * from scott.emp whereempno=8899;

     EMPNO ENAME      JOB          MGR HIREDATE      SAL       COMM    DEPTNO

---------- ---------- --------- ------------------- ---------- ---------- ----------

     8899 on

Execution Plan

----------------------------------------------------------

Plan hash value: 2949544139

--------------------------------------------------------------------------------------

| Id | Operation             | Name  | Rows  | Bytes | Cost (%CPU)|Time     |

--------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |           |        1|      87 |        2  (0)| 00:00:01 |

|   1 | TABLE ACCESS BY INDEX ROWID| EMP   |     1 |       87 |        2  (0)| 00:00:01 |

|*  2 |  INDEX UNIQUE SCAN        | PK_EMP |      1 |          |        1  (0)| 00:00:01 |

--------------------------------------------------------------------------------------

Predicate Information (identified byoperation id):

---------------------------------------------------

   2- access("EMPNO"=8899)

Statistics

----------------------------------------------------------

         9 recursive calls

         0  db blockgets

        18 consistent gets

         0 physical reads

         0  redosize

       861  bytes sent via SQL*Net to client

       512  bytes received via SQL*Net from client

         1 SQL*Net roundtrips to/from client

         0 sorts (memory)

         0 sorts (disk)

         1  rows processed

set autotrace traceonly

和set autotrace on類似,但是不輸出使用者查詢的結果

SQL> set autotrace traceonly;

SQL> insert into scott.empvalues('9900','traceonly','','','','','','');

1 row created.

set autotrace on 類似,都會輸出執行計劃和統計資訊

Execution Plan

----------------------------------------------------------

---------------------------------------------------------------------------------

| Id | Operation         | Name | Rows  | Bytes | Cost (%CPU)| Time  |

---------------------------------------------------------------------------------

|   0 | INSERT STATEMENT  |    |     1 |  100 |     1   (0)| 00:00:01 |

|   1 | LOAD TABLE CONVENTIONAL | EMP |      |      |          |            |

---------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

       108  recursive calls

         5  dbblock gets

       191  consistent gets

         1 physical reads

       520  redo size

       839  bytes sent via SQL*Net to client

       825  bytes received via SQL*Net from client

         3 SQL*Net roundtrips to/from client

        15 sorts (memory)

         0 sorts (disk)

         1  rows processed

SQL> select * from scott.emp whereempno=9900;

set autotrace on不同的是,沒有輸出查詢結果

Execution Plan

----------------------------------------------------------

Plan hash value: 2949544139

--------------------------------------------------------------------------------------

| Id | Operation             | Name  | Rows  | Bytes | Cost (%CPU)|Time     |

--------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT     |           |        1|      87 |        2  (0)| 00:00:01 |

|   1 | TABLE ACCESS BY INDEX ROWID| EMP   |     1 |       87 |        2  (0)| 00:00:01 |

|*  2 |   INDEXUNIQUE SCAN        | PK_EMP |      1 |          |        1  (0)| 00:00:01 |

--------------------------------------------------------------------------------------

Predicate Information (identified byoperation id):

---------------------------------------------------

   2- access("EMPNO"=9900)

Statistics

----------------------------------------------------------

         9 recursive calls

         0  dbblock gets

        18 consistent gets

         0 physical reads

         0  redosize

       867  bytes sent via SQL*Net to client

       512  bytes received via SQL*Net from client

         1 SQL*Net roundtrips to/from client

         0 sorts (memory)

         0 sorts (disk)

         1  rows processed

SQL>

2.dbms_xplan

概述

dbms_xplan包提供了多樣的,預定義的方式去解釋執行計劃。sql執行計劃,執行時間等資訊都儲存與v$sql_plan,v$sql_plan_statistics_all檢視中。此包執行的許可權是執行使用者,不是包的擁有者sys。

當執行display_awr時,需要DBA_HIST_SQL_PLAN, DBA_HIST_SQLTEXT, andV$DATABASE的查詢許可權

當執行display_cursor時需要V$SQL_PLAN, V$SESSION and V$SQL_PLAN_STATISTICS_ALL的查詢許可權

當執行display_sql_plan_baseline時,需要DBA_SQL_PLAN_BASELINES的查詢許可權

當執行display_sqlset時,需要ALL_SQLSET_STATEMENTS and ALL_SQLSET_PLANS的查詢許可權

以上的所有許可權都在SELECT_CATALOG角色中,所以直接賦權SELECT_CATALOG就可以了。

dbms_xplan中有許多功能,我這裡著重研究其中幾個常用的

SQL> desc dbms_xplan;

FUNCTION DISPLAY_AWR RETURNSDBMS_XPLAN_TYPE_TABLE

 Argument Name                     Type                    In/Out Default?

 ----------------------------------------------------- ------ --------

 SQL_ID                    VARCHAR2        IN

 PLAN_HASH_VALUE            NUMBER(38)             IN     DEFAULT

 DB_ID                       NUMBER(38)             IN     DEFAULT

 FORMAT                 VARCHAR2        IN    DEFAULT

FUNCTION DISPLAY_CURSOR RETURNS DBMS_XPLAN_TYPE_TABLE

 Argument Name                     Type                    In/Out Default?

 ----------------------------------------------------- ------ --------

 SQL_ID                    VARCHAR2        IN    DEFAULT

 CURSOR_CHILD_NO           NUMBER(38)             IN     DEFAULT

 FORMAT                 VARCHAR2        IN    DEFAULT

FUNCTION DISPLAY_PLAN RETURNS CLOB

 Argument Name                     Type                    In/Out Default?

 ----------------------------------------------------- ------ --------

 TABLE_NAME                 VARCHAR2        IN    DEFAULT

 STATEMENT_ID                    VARCHAR2        IN    DEFAULT

 FORMAT                 VARCHAR2        IN    DEFAULT

 FILTER_PREDS                    VARCHAR2        IN    DEFAULT

 TYPE                        VARCHAR2        IN    DEFAULT

dbms_xplan.display

展示執行計劃內容

簡單的執行一次display

SQL> explain plan for insert intoscott.emp values(1111,'xplan','','','','','','');

Explained.

SQL> select * from table(dbms_xplan.display);

7 rows selected.

Execution Plan

----------------------------------------------------------

Plan hash value: 2137789089

---------------------------------------------------------------------------------------------

| Id | Operation                  | Name   | Rows  | Bytes | Cost (%CPU)|Time     |

---------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT          |      |  8168 | 16336 | 29  (0)| 00:00:01 |

|   1 | COLLECTION ITERATOR PICKLER FETCH| DISPLAY |  8168 | 16336 | 29   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------

Statistics

----------------------------------------------------------

      1890  recursive calls

        40  dbblock gets

       3635 consistent gets

         0 physical reads

         0  redosize

      1102  bytes sent via SQL*Net toclient

       523  bytes received via SQL*Net from client

         2  SQL*Net roundtrips to/from client

        38 sorts (memory)

         0 sorts (disk)

         7  rowsprocessed

SQL> select * from scott.emp whereempno=1111;

no rows selected

explain plan for dbms_xplan.display都沒有執行sqlexplain plan for是產生sql的執行計劃並儲存在PLAN_TABLE表中,dbms_xplan.displayPLAN_TABLE中提取計劃並展示出來。

定義

DBMS_XPLAN.DISPLAY(

   table_name   IN  VARCHAR2  DEFAULT 'PLAN_TABLE',

   statement_id IN  VARCHAR2  DEFAULT NULL,

  format            IN  VARCHAR2  DEFAULT 'TYPICAL',

  filter_preds     IN  VARCHAR2 DEFAULT NULL);

table_name:指定的是計劃的儲存表表名(不是執行表的表名)。預設是PLAN_TABLE。

statement_id:指定計劃的statement_id,如果沒有指定,則該值為explain plan的statement_id , 如果沒有expain plan,則該值為最近一次解釋的執行計劃。

format:解釋計劃的level

       •      BASIC: Displays the minimum information inthe plan—the operation ID, the operation name and its option.展示最少的資訊

       •      TYPICAL: This is the default. Displays themost relevant information in the plan (operation id, name and option, #rows,#bytes and optimizer cost). Pruning, parallel and predicate information areonly displayed when applicable. Excludes only PROJECTION, ALIAS and REMOTE SQLinformation (see below).預設值

       •      SERIAL: Like TYPICAL except that theparallel information is not displayed, even if the plan executes in parallel.沒有併發資訊

  •  ALL: Maximum user level. Includesinformation displayed with the TYPICAL level with additional information(PROJECTION, ALIAS and information about REMOTE SQL if the operation isdistributed).展示最多的資訊,包含了分散式操作的遠端sql執行資訊

filter_preds:sql過濾,限制從計劃表中返回的行。

dbms_xplan.display_awr 

展示在awr中儲存的sql的執行計劃

定義

DBMS_XPLAN.DISPLAY_AWR(

  sql_id            IN      VARCHAR2,

   plan_hash_value   IN     NUMBER DEFAULT NULL,

  db_id             IN      NUMBER DEFAULT NULL,

  format            IN      VARCHAR2 DEFAULT TYPICAL);

sql_id:在dba_hist_sqltext中可以找到sql_id

plan_hash_value:sql執行計劃的hash值。如果該值被忽略,則函式返回sql_id中的所有執行計劃

db_id:database_id。如果不知道則該值為V$DATABASE檢視中的database_id,也就是本地資料庫。

format:與display類似。總共有4個level:BASIC,TYPICAL,SERIAL,ALL。

SQL> select * from scott.emp whererownum<=1;

     EMPNO ENAME      JOB          MGR HIREDATE      SAL       COMM

---------- ---------- --------- ------------------- ---------- ----------

    DEPTNO

----------

     7369 SMITH      CLERK         7902 17-DEC-80         800

       20

手動生成快照

SQL> EXECUTE DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();

PL/SQL procedure successfully completed.

SQL> select sql_id,sql_text from dba_hist_sqltext where sql_text like '%rownum%';

bd3tcy3ar02px

select * from scott.emp where rownum<=1

SQL>

指定awr中存在sql

SQL> select * fromtable(dbms_xplan.display_awr('bd3tcy3ar02px'));

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

SQL_ID bd3tcy3ar02px

--------------------

select * from scott.emp where rownum<=1

Plan hash value: 1973284518

---------------------------------------------------------------------------

| Id | Operation     | Name | Rows  | Bytes | Cost (%CPU)| Time       |

---------------------------------------------------------------------------

|  0 | SELECT STATEMENT   |    |     |     |   2 (100)|   |

|   1 | COUNT STOPKEY       |   |     |     |          |   |

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

|   2 |  TABLE ACCESS FULL| EMP  |    15 | 1305 |      2   (0)| 00:00:01 |

---------------------------------------------------------------------------

Note

-----

   -dynamic sampling used for this statement (level=2)

18 rows selected.

SQL>

dbms_xplan.display_cursor

展示cursor中的執行計劃

定義

DBMS_XPLAN.DISPLAY_CURSOR(

  sql_id           IN  VARCHAR2 DEFAULT  NULL,

   cursor_child_no  IN NUMBER    DEFAULT  0,

  format           IN  VARCHAR2 DEFAULT  ‘TYPICAL');

sql_id

cursor_child_no:子游標標誌。如果沒有指定,則展示sql_id下的所有執行計劃

format 展示方式

預設值執行

SQL> select * from scott.emp whererownum<=2;

     EMPNO ENAME      JOB          MGR HIREDATE      SAL       COMM

---------- ---------- --------- ------------------- ---------- ----------

    DEPTNO

----------

     7369 SMITH      CLERK         7902 17-DEC-80         800

       20

     7499 ALLEN      SALESMAN        7698 20-FEB-81        1600       300

       30

預設查詢了當前session最後一次執行sql

SQL> select * fromtable(dbms_xplan.display_cursor);

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

SQL_ID 90ud69jbjz75c,child number 0

-------------------------------------

select * from scott.emp where rownum<=2

Plan hash value: 1973284518

---------------------------------------------------------------------------

| Id | Operation     | Name | Rows  | Bytes | Cost (%CPU)| Time       |

---------------------------------------------------------------------------

|  0 | SELECT STATEMENT   |    |     |     |   2 (100)|   |

|*  1 | COUNT STOPKEY        |   |     |     |          |   |

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

|   2 |  TABLE ACCESS FULL| EMP  |    15 | 1305 |      2   (0)| 00:00:01 |

---------------------------------------------------------------------------

Predicate Information (identified byoperation id):

---------------------------------------------------

   1- filter(ROWNUM<=2)

Note

-----

   -dynamic sampling used for this statement (level=2)

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

23 rows selected.

SQL>

指定sql_id查詢plan,首先要找到sql_id

SQL> select sql_id,sql_text fromv$sqlarea where sql_text like '%rownum<=2%';

SQL_ID

-------------

SQL_TEXT

--------------------------------------------------------------------------------

75gpskbx0uk8w

select sql_id,sql_text from v$sqlarea wheresql_text like '%rownum<=2%'

90ud69jbjz75c

select * from scott.emp where rownum<=2

SQL> select * fromtable(dbms_xplan.display_cursor('90ud69jbjz75c'));

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

SQL_ID 90ud69jbjz75c,child number 0

-------------------------------------

select * from scott.emp where rownum<=2

Plan hash value: 1973284518

---------------------------------------------------------------------------

| Id | Operation     | Name | Rows  | Bytes | Cost (%CPU)| Time       |

---------------------------------------------------------------------------

|  0 | SELECT STATEMENT   |    |     |     |   2 (100)|   |

|*  1 | COUNT STOPKEY        |   |     |     |          |   |

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

|   2 |  TABLE ACCESS FULL| EMP  |    15 | 1305 |      2   (0)| 00:00:01 |

---------------------------------------------------------------------------

Predicate Information (identified byoperation id):

---------------------------------------------------

   1- filter(ROWNUM<=2)

Note

-----

   -dynamic sampling used for this statement (level=2)

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

23 rows selected.

如果sql不在記憶體中,則不能通過cursor方式查詢

SQL> select * fromtable(dbms_xplan.display_cursor('90ud69jbjz75c'));

PLAN_TABLE_OUTPUT

--------------------------------------------------------------------------------

SQL_ID: 90ud69jbjz75c, child number: 0cannot be found

這時就可以通過生成快照的方式從awr中查詢plan

3.10046事件

概述

這是一個特殊的事件,可以被用來發起sql_trace類的活動

使用10046的優勢就是可以在trace檔案中看到詳細的資料庫活動細節,細節資訊也取決於事件的level。

level

1:標準的sql_trace

4:level 1加上繫結變數      [ bind=true ]

8:levle 1加上等待。在定位等待事件的時候很有用  [ wait=true ]

12:常用的level,包含了level 1,繫結變數,等待,預設stat line。相當於(4+8)

16:每次執行都生成stat line。11g新增。 [ plan_stat=all_executions ]

32:不生成執行統計。11g新增  。[ plan_stat=never ]

64:Adaptive dump of STAT lines. This dumps the STATinformation if a SQL took more than about 1 minute thereby giving informationfor the more expensive SQLs and for different executions of such  SQLs。11gR2新增。 [ plan_stat=adaptive ]

使用10046事件

session級追蹤

檢視trace的位置

SQL> show parameter user_dump_dest

NAME                              TYPE   VALUE

----------------------------------------------- ------------------------------

user_dump_dest                    string    /u01/app/oracle/diag/rdbms/zld

                                           b/zldb/trace

—tracefile標誌

SQL> alter session settracefile_identifier='liuzhilong';

Session altered.

開啟10046

SQL> alter session set events '10046trace name context forever,level 12';

Session altered.

SQL> select * from scott.emp whererownum<=1;

     EMPNO ENAME      JOB          MGR HIREDATE      SAL       COMM

---------- ---------- --------- ------------------- ---------- ----------

    DEPTNO

----------

     7369 SMITH      CLERK         7902 17-DEC-80         800

       20

SQL>

退出sqlplus(session級)或者使用以下語句關閉事件

alter session set events '10046 trace namecontext off’;

[[email protected] Desktop]# cd/u01/app/oracle/diag/rdbms/zldb/zldb/trace/

[[email protected] trace]# ls *liu*

zldb_ora_2990_liuzhilong.trc  zldb_ora_2990_liuzhilong.trm

使用oradebug工具

SQL> oradebug setmypid

Statement processed.

SQL> oradebug event 10046 trace name context forever, level 12;

Statement processed.

SQL> select ename from scott.emp whererownum<=1;

ENAME

----------

SMITH

SQL> oradebug tracefile_name;

/u01/app/oracle/diag/rdbms/zldb/zldb/trace/zldb_ora_2990.trc

SQL>

參考文件

AUTOTRACE Option inSQL*Plus (文件 ID 43214.1)

Display Execution Plans withDBMS_XPLAN.DISPLAY (文件 ID 236026.1)

Using DBMS_XPLAN.DISPLAY_CURSOR toIdentify Bind Values Used During Parse (文件 ID 416324.1)

EVENT: 10046 "enable SQL statementtracing (including binds/waits)" (文件 ID 21154.1)

* How To Collect 10046 Trace (SQL_TRACE)Diagnostics for Performance Issues (文件 ID 376442.1)

相關推薦

檢視執行計劃常用方法

1.autotraceset autotrace off不產生autotrace報告,預設值set autotrace on explainautotrace報告只展示最優的執行方式(optimizer execution path)SQL> set autotrace

Oracle之SQL優化專題01-檢視SQL執行計劃方法

在我2014年總結的“SQL Tuning 基礎概述”中,其實已經介紹了一些檢視SQL執行計劃的方法,但是不夠系統和全面,所以本次SQL優化專題,就首先要系統的介紹一下檢視SQL執行計劃的方法。 本文示例SQL為: --set lines 1000 pages 1000 select a.emp

檢視執行計劃的6種方法

1、explain plan for :如果某SQL執行非常長時間才會出結果,甚至慢到返回不了結果,這時候看執行計劃就只能用方法1,或者方法4;     缺點:沒有輸出執行時的相關統計資訊(產生多少邏輯讀,多少次遞迴呼叫,多少次物理讀的情況),無法判斷是處理了多少行,無法判

簡單對比檢視執行計劃的兩種方法EXPLAIN PLAN 和 AUTOTRACE

EXPLAIN PLAN 和 AUTOTRACE 都可以檢視執行計劃。 值得一提的是:前者只是優化器通過讀取資料字典的統計資訊做出'最佳'訪問路徑判斷,並沒有真正去執行語句;後者是實際去執行了SQL語句,同時把訪問記錄數、執行計劃、統計資訊等打印出來。 下面粘出實驗結果加以

Oracle之SQL優化專題02-穩固SQL執行計劃方法

首先構建一個簡單的測試用例來實際演示: create table emp as select * from scott.emp; create table dept as select * from scott.dept; create index idx_emp_empno on emp(empno);

守護執行緒和執行常用方法

執行緒的守護的使用,形式與程序基本相同 from threading import Thread import time def task(): print("子執行緒 開始工作") time.sleep(2) print("子執行緒 結束工作") t1 = Thread(

使用10046檢視執行計劃並讀懂trace檔案

轉自:https://blog.csdn.net/dataminer_2007/article/details/42040853 檢視 sql 執行計劃的方法有許多種, 10046 事件就是其中的一種. 與其他檢視 sql 執行計劃不同, 當我們遇到比較複雜的 sql 語句, 我們可以通過 10

mysql 獲取執行計劃方法

mysql 獲取執行計劃方法:1.通過explain進行檢視sql的執行計劃;2.通執行緒正在執行的sql檢視該sql的執行計劃; explain進行檢視sql的執行計劃相對簡單,其實通執行緒正在執行的sql檢視執行計劃也很簡單,那麼為什麼還需要第二種方式呢? 因為日常工作會發現很多sql一直在執

執行緒第四課——執行常用方法

  這節課我們來講講執行緒常用的方法,還是看API文件加寫程式碼演示:   以下是Thread類的常用方法 以下是Object類中和執行緒有關的方法:        

池與執行緒池 技術點 目錄 1. 執行緒池作用: 提升效能 1 2. 使用流程 1 3. 執行緒與執行緒池的監控 jvisual 1 4. 執行常用方法 2 5. 執行緒池相關概念 2 5.1. 佇列

 池與執行緒池 技術點   目錄 1. 執行緒池作用:  提升效能 1 2. 使用流程 1 3. 執行緒與執行緒池的監控  jvisual 1 4. 執行緒常用方法 2 5. 執行緒池相關概念 2 5.1. 佇列 &n

Oracle 如何檢視執行計劃

定義:用來執行目標SQL語句的這些步驟的組合就被稱為執行計劃。 oracle檢視執行計劃的幾種方式: 1、explain plan命令(可能不準確,SQL語句沒有實際執行是個估計值) --語法:explain plan for 目標sql explain pla

ORACLE資料庫檢視執行計劃

TKPROF: Release 10.2.0.1.0 - Production on 星期三 5月 23 16:56:41 2012Copyright (c) 1982, 2005, Oracle. All rights reserved.Trace file: D:\ORACLE\PRODUCT\1

JAVA多執行緒機制第四彈:(末篇)執行常用方法總結和執行緒同步

執行緒的常用方法: 這裡我覺得這個老師的教案總結的很舒胡(主要是懶~):  執行緒同步: 在處理多執行緒問題時,有一個Bug問題啊:當兩個或多個執行緒同時訪問一個父類變數時,並且一個執行緒需要修改這個變數,(一個執行緒讓變數A增加,另一個執行緒讓變數A減少)。 所

DB2中如何檢視執行計劃

[email protected]:~$ db2 "flush package cache dynamic" DB20000I The SQL command completed successfully.' [email protected]:~$ db2 "SELECT NAME

查詢分析器裡檢視執行計劃

當需要分析某個查詢的效能時,最好的方式之一檢視這個查詢的執行計劃。執行計劃描述SQL Server查詢優化器如何實際執行(或者將會如何執行)一個特定的查詢。 檢視查詢的執行計劃有幾種不同的方式。它們包括: SQL Server查詢分析器裡有一個叫做”顯示實際執行計劃”的

執行常用方法統計

currentThread(): currentThread()方法可返回程式碼段正在被那個執行緒呼叫的資訊。 isAlive(): 方法isAlive()的功能是判斷當前的執行緒是否處於活動狀態。 sleep(): 在指定的毫秒數內讓當前“正在執行的執行緒”休眠(暫停執

Oracle 檢視執行計劃

-- Start EXPLAIN PLAN 我們可以通過 EXPLAIN PLAN 語句生成執行計劃,該語句把執行計劃儲存到一個叫做 PLAN_TABLE 的表中,我們可以通過查詢這個表來檢視執行計劃。下面是一個簡單例子。 -- 生成執行計劃 EXPLAIN PLAN

清除SQL Server資料快取和執行計劃快取,檢視執行計劃的各種方式對比

清除資料和執行計劃快取: DBCC DROPCLEANBUFFERSDBCC FREEPROCCACHE 開啟統計資料: SET STATISTICS IO ON SET STATISTICS TIME ON 開啟執行計劃: SET SHOWPLAN_TEXT ONSET S

sybase 檢視執行計劃

檢視語句的執行計劃: set showplan on set noexec on go select ....... go set showplan off set noexec off go 檢視儲存過程執行計劃: set showplan on

J2SE第九章——執行緒(常用方法)

3 狀態轉換          建立執行緒物件 new--> 執行緒啟動,進入就緒狀態 start() 等CPU空閒          ---->run()方法真正開始執行 ----> 阻塞執行緒,繼續進入就緒(準備)狀態          ---->