<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        gather_plan_statistics查看sql的join部分的內存消耗

        來源:懂視網 責編:小采 時間:2020-11-09 13:01:15
        文檔

        gather_plan_statistics查看sql的join部分的內存消耗

        gather_plan_statistics查看sql的join部分的內存消耗:遇見一個sql語句,感覺驅動表的順序選擇有問題,就倒騰了一會兒,具體的sql語句如下,這里推薦使用gather_plan_statistics來查看具體的每個執行計劃消耗的IO資源、執行時間、預估和實際返回的rows。 SQL_ID dq4pj5cnn0gb8, child numb
        推薦度:
        導讀gather_plan_statistics查看sql的join部分的內存消耗:遇見一個sql語句,感覺驅動表的順序選擇有問題,就倒騰了一會兒,具體的sql語句如下,這里推薦使用gather_plan_statistics來查看具體的每個執行計劃消耗的IO資源、執行時間、預估和實際返回的rows。 SQL_ID dq4pj5cnn0gb8, child numb

        遇見一個sql語句,感覺驅動表的順序選擇有問題,就倒騰了一會兒,具體的sql語句如下,這里推薦使用gather_plan_statistics來查看具體的每個執行計劃消耗的IO資源、執行時間、預估和實際返回的rows。 SQL_ID dq4pj5cnn0gb8, child number 0 -----------------

        遇見一個sql語句,感覺驅動表的順序選擇有問題,就倒騰了一會兒,具體的sql語句如下,這里推薦使用gather_plan_statistics來查看具體的每個執行計劃消耗的IO資源、執行時間、預估和實際返回的rows。

        SQL_ID dq4pj5cnn0gb8, child number 0
        -------------------------------------
        select /*+ gather_plan_statistics*/a.SERVNUMBER, a.REGION from
        tbcs.SUBS_USEDTEL a, tbcs.CS_SUBS_SERVNUMBER_TRANS b where a.SUBSID =
        b.TRANSIN_SUBSID and a.REGION = b.TRANSIN_REGION and a.INTIME >
        sysdate - 90 and a.RECDEFID in ('DropSubs', 'FraudDropSubs') and
        a.REGION = 20

        Plan hash value: 2146127278

        -----------------------------------------------------------------------------------------------------------------------------------------
        | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
        -----------------------------------------------------------------------------------------------------------------------------------------
        | 0 | SELECT STATEMENT | | 1 | | 100 |00:00:01.08 | 19453 | | | |
        |* 1 | HASH JOIN | | 1 | 4749 | 100 |00:00:01.08 | 19453 | 24M| 3319K| 25M (0)|
        | 2 | PARTITION RANGE SINGLE| | 1 | 4749 | 374K|00:00:00.83 | 17257 | | | |
        |* 3 | TABLE ACCESS FULL | SUBS_USEDTEL | 1 | 4749 | 374K|00:00:00.66 | 17257 | | | |
        |* 4 | TABLE ACCESS FULL | CS_SUBS_SERVNUMBER_TRANS | 1 | 13477 | 8795 |00:00:00.05 | 2196 | | | |
        -----------------------------------------------------------------------------------------------------------------------------------------

        Predicate Information (identified by operation id):
        ---------------------------------------------------

        1 - access("A"."SUBSID"="B"."TRANSIN_SUBSID" AND "A"."REGION"="B"."TRANSIN_REGION")
        3 - filter(("A"."REGION"=20 AND INTERNAL_FUNCTION("A"."RECDEFID") AND "A"."INTIME">SYSDATE@!-90))
        4 - filter("B"."TRANSIN_REGION"=20)

        這里cbo在執行計劃3中預估SUBS_USEDTEL通過謂詞條件返回的數據只有4749,而實際返回了374K數據,初步來看這個sql應該交換下驅動表的順序,讓CS_SUBS_SERVNUMBER_TRANS去做驅動表。

        SQL_ID 8px917y6cub58, child number 0
        -------------------------------------
        select /*+ gather_plan_statistics leading(b a) */
        a.SERVNUMBER, a.REGION
        from tbcs.SUBS_USEDTEL a, tbcs.CS_SUBS_SERVNUMBER_TRANS b
        where a.SUBSID = b.TRANSIN_SUBSID
        and a.REGION = b.TRANSIN_REGION
        and a.INTIME > sysdate - 90
        and a.RECDEFID in ('DropSubs', 'FraudDropSubs')
        and a.REGION = 20

        Plan hash value: 2680037744

        -----------------------------------------------------------------------------------------------------------------------------------------
        | Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buffers | OMem | 1Mem | Used-Mem |
        -----------------------------------------------------------------------------------------------------------------------------------------
        | 0 | SELECT STATEMENT | | 1 | | 346 |00:00:00.66 | 20281 | | | |
        |* 1 | HASH JOIN | | 1 | 4749 | 346 |00:00:00.66 | 20281 | 1998K| 1998K| 2083K (0)|
        |* 2 | TABLE ACCESS FULL | CS_SUBS_SERVNUMBER_TRANS | 1 | 13477 | 14135 |00:00:00.06 | 3024 | | | |
        | 3 | PARTITION RANGE SINGLE| | 1 | 4749 | 374K|00:00:00.78 | 17257 | | | |
        |* 4 | TABLE ACCESS FULL | SUBS_USEDTEL | 1 | 4749 | 374K|00:00:00.61 | 17257 | | | |
        -----------------------------------------------------------------------------------------------------------------------------------------

        Predicate Information (identified by operation id):
        ---------------------------------------------------

        1 - access("A"."SUBSID"="B"."TRANSIN_SUBSID" AND "A"."REGION"="B"."TRANSIN_REGION")
        2 - filter("B"."TRANSIN_REGION"=20)
        4 - filter(("A"."REGION"=20 AND INTERNAL_FUNCTION("A"."RECDEFID") AND "A"."INTIME">SYSDATE@!-90))

        我們添加了hint lleading(b a)強制指定關聯順序,在整個sql消耗的邏輯讀其實是沒多大的變化,其實這里主要需要普及的一個知識點就是hash join的關聯cbo是不會計算到邏輯讀的。

        那么這兩個sql好像IO成本每多大的變化啊,但是我們觀察OMem、1Mem、Used-Mem三項是有顯著變化的,這里簡單解釋下這三個指標的信息
        OMem為最優執行模式所需的內存評估值
        1Mem為one-pass模式所需的內存評估值
        Used-Mem則為實際執行時消耗的內存,而且我們還看見25M (0)和2083K (0)都有一個括號0,這個表示該sql是最優執行模式執行的

        可以看出制定了正確的驅動表可以大幅度的減輕系統的內存消耗,這里也提供了我們一個思路就是優化sql時不能僅僅去關注IO資源,還要關注下內存的消耗,通過gather_plan_statistics可以很直觀的觀察到sql執行時join關聯部分的內存消耗,

        oracle官當對于memstats的解釋(allstats=iostats+memstats的組合):

        ?MEMSTATS – Assuming that PGA memory management is enabled (that is,pga_aggregate_target parameter is set to a non 0 value), this format allows to display memory management statistics (for example, execution mode of the operator, how much memory was used, number of bytes spilled to disk, and so on). These statistics only apply to memory intensive operations like hash-joins, sort or some bitmap operators.

        這個used-men和v$sql或者v$sqlarea的視圖記錄內存消耗的列是不相同的,used-mem是執行sql部分join消耗的pga內存部分,而v$sql或者v$sqlarea記錄的是cursor的信息

        sharable_mem:Amount of shared memory used by a cursor. If multiple child cursors exist, then the sum of all shared memory used by all child cursors.
        persistent_mem:Fixed amount of memory used for the lifetime of an open cursor. If multiple child cursors exist, then the fixed sum of memory used for the
        lifetime of all the child cursors.
        runtime_mem:Fixed amount of memory required during execution of a cursor. If multiple child cursors exist, then the fixed sum of all memory required
        during execution of all the child cursors.

        這里我們需要注意的時優化sql時不能僅僅只是以邏輯讀去衡量某個sql的性能,對于用戶而言我們肯定是最關注sql的響應時間,我們優化IO、減少內存和cpu消耗等都是為了讓執行sql時做盡可能少的事情,進而提高sql的響應時間。

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        gather_plan_statistics查看sql的join部分的內存消耗

        gather_plan_statistics查看sql的join部分的內存消耗:遇見一個sql語句,感覺驅動表的順序選擇有問題,就倒騰了一會兒,具體的sql語句如下,這里推薦使用gather_plan_statistics來查看具體的每個執行計劃消耗的IO資源、執行時間、預估和實際返回的rows。 SQL_ID dq4pj5cnn0gb8, child numb
        推薦度:
        標簽: 內存 查看 sql
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产一区二区三区在线免费| 成人免费a级毛片| 亚洲福利在线播放| 亚洲av永久中文无码精品| 成全影视免费观看大全二| 亚洲人成网站18禁止久久影院 | 免费a级毛片网站| 亚洲国产成人综合精品| 四虎成人免费观看在线网址 | 精品国产亚洲男女在线线电影 | 毛片免费观看网站| 亚洲国产成人久久综合| 国产在线观看免费视频播放器| 亚洲av无码成人影院一区| 国产一级淫片a视频免费观看| 国产AV无码专区亚洲AV琪琪| 亚洲?V无码成人精品区日韩| 一个人看的www免费在线视频| 中文字幕亚洲综合久久菠萝蜜 | 亚洲午夜精品久久久久久app| 女人被男人桶得好爽免费视频| 国产成人人综合亚洲欧美丁香花 | 国产精品久久久久久久久久免费 | 亚洲国产成人资源在线软件| 免费无码A片一区二三区| 风间由美在线亚洲一区| 国产精品亚洲产品一区二区三区 | 又黄又爽的视频免费看| 久久久WWW成人免费精品| 久久国产精品亚洲一区二区| 福利免费观看午夜体检区| 精品免费AV一区二区三区| 国精无码欧精品亚洲一区| 国产成人福利免费视频| 色噜噜的亚洲男人的天堂| 国产亚洲人成无码网在线观看| 精品久久8x国产免费观看| 国产AV无码专区亚洲AV琪琪| 久久精品国产精品亚洲艾草网| av无码免费一区二区三区| 免费看一级高潮毛片|