暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分享Postgres SQL execution plan visualizer

TimTest 2020-08-17
1384

在工作中,如果遇到某个SQL执行时间比较长,很多时候会考虑到SQL的执行计划怎样?通过分析SQL的执行计划去分析SQL瓶颈在哪里。


那么运用默认的Postgresql方式是可以去分析执行计划的。如下例:

    explain analyze select * from public.sort_test where id = 10001;

    其结果是:

    而我这里会给大家分享一个免费的,很好的可视化工具去分析,特别是针对比较复杂的SQL执行计划,会更适用。步骤如下:

    1. 得到SQL 执行计划的Json 输出格式文本,可以通过如下解决:



      • EXPLAIN (ANALYZE, COSTS, VERBOSE, BUFFERS, FORMAT JSON) 
        select * from public.sort_test where id = 10001;

         得到的Json格式的执行计划如下:


          [
          {
          "Plan": {
          "Node Type": "Index Scan",
          "Parallel Aware": false,
          "Scan Direction": "Forward",
          "Index Name": "sort_test_pkey",
          "Relation Name": "sort_test",
          "Schema": "public",
          "Alias": "sort_test",
          "Startup Cost": 0.43,
          "Total Cost": 8.45,
          "Plan Rows": 1,
          "Plan Width": 14,
          "Actual Startup Time": 0.015,
          "Actual Total Time": 0.016,
          "Actual Rows": 1,
          "Actual Loops": 1,
          "Output": [
          "id",
          "salary"
          ],
          "Index Cond": "(sort_test.id = 10001)",
          "Rows Removed by Index Recheck": 0,
          "Shared Hit Blocks": 4,
          "Shared Read Blocks": 0,
          "Shared Dirtied Blocks": 0,
          "Shared Written Blocks": 0,
          "Local Hit Blocks": 0,
          "Local Read Blocks": 0,
          "Local Dirtied Blocks": 0,
          "Local Written Blocks": 0,
          "Temp Read Blocks": 0,
          "Temp Written Blocks": 0
          },
          "Planning Time": 0.127,
          "Triggers": [],
          "Execution Time": 0.037
            }]

        • 打开可视化工具网站:http://www.tatiyants.com/pev/
        • 在页面上点击按钮“NEW PLAN"
        • 在界面上按顺序填入如下图所示的元素,然后点击“SUBMIT"按钮。

          6. 之后,上例中的可视化执行计划如下图:


        文章转载自TimTest,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论