婷婷久久综合九色综合,欧美成色婷婷在线观看视频,偷窥视频一区,欧美日本一道道一区二区

<tt id="bu9ss"></tt>
  • <span id="bu9ss"></span>
  • <pre id="bu9ss"><tt id="bu9ss"></tt></pre>
    <label id="bu9ss"></label>

    當前位置:首頁 >  站長 >  數(shù)據(jù)庫 >  正文

    postgresql查看表和索引的情況,判斷是否膨脹的操作

     2021-06-02 17:43  來源: 腳本之家   我來投稿 撤稿糾錯

      阿里云優(yōu)惠券 先領券再下單

    索引膨脹的幾個來源:

    1 大量刪除發(fā)生后,導致索引頁面稀疏,降低了索引使用效率。

    2 PostgresQL 9.0之前的版本,vacuum full 會同樣導致索引頁面稀疏。

    3 長時間運行的事務,禁止vacuum對表的清理工作,因而導致頁面稀疏狀態(tài)一直保持。

    查看重復索引

    SELECT pg_size_pretty(SUM(pg_relation_size(idx))::BIGINT) AS SIZE,
      (array_agg(idx))[1] AS idx1, (array_agg(idx))[2] AS idx2,
      (array_agg(idx))[3] AS idx3, (array_agg(idx))[4] AS idx4
    FROM (
     SELECT indexrelid::regclass AS idx, (indrelid::text ||E'\n'|| indclass::text ||E'\n'|| indkey::text ||E'\n'||
               COALESCE(indexprs::text,'')||E'\n' || COALESCE(indpred::text,'')) AS KEY
     FROM pg_index) sub
    GROUP BY KEY HAVING COUNT(*)>1
    ORDER BY SUM(pg_relation_size(idx)) DESC;

     

    表的大小和表中索引個數(shù)

    SELECT
     t.tablename,
     indexname,
     c.reltuples AS num_rows,
     pg_size_pretty(pg_relation_size(quote_ident(t.tablename)::text)) AS table_size,
     pg_size_pretty(pg_relation_size(quote_ident(indexrelname)::text)) AS index_size,
     CASE WHEN indisunique THEN 'Y'
      ELSE 'N'
     END AS UNIQUE,
     idx_scan AS number_of_scans,
     idx_tup_read AS tuples_read,
     idx_tup_fetch AS tuples_fetched
    FROM pg_tables t
    LEFT OUTER JOIN pg_class c ON t.tablename=c.relname
    LEFT OUTER JOIN
     ( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns, idx_scan, idx_tup_read, idx_tup_fetch, indexrelname, indisunique FROM pg_index x
       JOIN pg_class c ON c.oid = x.indrelid
       JOIN pg_class ipg ON ipg.oid = x.indexrelid
       JOIN pg_stat_all_indexes psai ON x.indexrelid = psai.indexrelid )
     AS foo
     ON t.tablename = foo.ctablename
    WHERE t.schemaname='public'
    ORDER BY 1,2;

     

    獲取每個表的行數(shù),索引和一些關于這些索引的信息(比較詳細)

    SELECT
     pg_class.relname,
     pg_size_pretty(pg_class.reltuples::BIGINT) AS rows_in_bytes,
     pg_class.reltuples AS num_rows,
     COUNT(indexname) AS number_of_indexes,
     CASE WHEN x.is_unique = 1 THEN 'Y'
      ELSE 'N'
     END AS UNIQUE,
     SUM(CASE WHEN number_of_columns = 1 THEN 1
        ELSE 0
       END) AS single_column,
     SUM(CASE WHEN number_of_columns IS NULL THEN 0
        WHEN number_of_columns = 1 THEN 0
        ELSE 1
       END) AS multi_column
    FROM pg_namespace
    LEFT OUTER JOIN pg_class ON pg_namespace.oid = pg_class.relnamespace
    LEFT OUTER JOIN
      (SELECT indrelid,
       MAX(CAST(indisunique AS INTEGER)) AS is_unique
      FROM pg_index
      GROUP BY indrelid) x
      ON pg_class.oid = x.indrelid
    LEFT OUTER JOIN
     ( SELECT c.relname AS ctablename, ipg.relname AS indexname, x.indnatts AS number_of_columns FROM pg_index x
       JOIN pg_class c ON c.oid = x.indrelid
       JOIN pg_class ipg ON ipg.oid = x.indexrelid )
     AS foo
     ON pg_class.relname = foo.ctablename
    WHERE
      pg_namespace.nspname='public'
    AND pg_class.relkind = 'r'
    GROUP BY pg_class.relname, pg_class.reltuples, x.is_unique
    ORDER BY 2;

     

    補充:postgresql查看表膨脹

    查看表膨脹(對所有表產(chǎn)進行膨脹率排序)

    SQL文如下:

    SELECT
     schemaname||'.'||relname as table_name,
     pg_size_pretty(pg_relation_size(schemaname||'.'||relname)) as table_size,
     n_dead_tup,
     n_live_tup,
     round(n_dead_tup * 100 / (n_live_tup + n_dead_tup),2) AS dead_tup_ratio
    FROM
     pg_stat_all_tables
    WHERE
     n_dead_tup >= 1000
    ORDER BY dead_tup_ratio DESC
    LIMIT 10;

    文章來源:腳本之家

    來源地址:https://www.jb51.net/article/204333.htm

    申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

    相關文章

    熱門排行

    信息推薦