乱码乱a∨中文字幕,在线免费激情视频,亚洲欧美久久夜夜潮,国产在线网址

  1. <sub id="hjl7n"></sub>

    1. <sub id="hjl7n"></sub>

      <legend id="hjl7n"></legend>

      當前位置:首頁 >  站長 >  數(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è)新機遇!

      相關文章

      熱門排行

      信息推薦