<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
        主站蜘蛛池模板: 久草免费福利在线| 亚洲熟妇无码久久精品| 国产精品亚洲专区无码牛牛| 亚洲精品免费在线视频| 久久青青草原亚洲AV无码麻豆 | 亚洲日韩乱码中文无码蜜桃 | 小说区亚洲自拍另类| 四虎免费在线观看| 亚洲日韩AV无码一区二区三区人| 在线观看免费人成视频| 亚洲一区二区三区高清不卡 | 在线观看的免费网站无遮挡| 久久亚洲精品国产精品黑人| 无码成A毛片免费| 91亚洲导航深夜福利| 在线视频免费观看高清| 亚洲hairy多毛pics大全| 国产免费小视频在线观看| 女人裸身j部免费视频无遮挡| 国产成人精品123区免费视频| 老司机午夜精品视频在线观看免费| 免费毛片网站在线观看| 污污视频免费观看网站| 亚洲色WWW成人永久网址| 少妇无码一区二区三区免费| 亚洲人和日本人jizz| 午夜色a大片在线观看免费| 中美日韩在线网免费毛片视频| 国内精品99亚洲免费高清| 三年片在线观看免费观看大全一| 久久亚洲AV成人无码国产 | 鲁丝片一区二区三区免费| 久久亚洲精品无码aⅴ大香| 手机在线看永久av片免费| 在线观看亚洲免费视频| 亚洲精品国偷自产在线| 香蕉97超级碰碰碰免费公| 猫咪www免费人成网站| 亚洲AV无码国产丝袜在线观看| 四虎永久在线精品免费观看视频| 日韩精品亚洲专区在线影视|