欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2021年01月19日 09:10:25   作者:奈何流年  
這篇文章主要介紹了postgresql查看表和索引的情況,判斷是否膨脹的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

索引膨脹的幾個來源:

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查看表膨脹

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

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;

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

相關文章

  • postgresql 日期查詢最全整理

    postgresql 日期查詢最全整理

    這篇文章主要介紹了postgresql 日期查詢最全整理,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • 在PostgreSQL中實現(xiàn)跨數(shù)據庫的關聯(lián)查詢

    在PostgreSQL中實現(xiàn)跨數(shù)據庫的關聯(lián)查詢

    在 PostgreSQL 中,通常情況下的關聯(lián)查詢是在同一個數(shù)據庫的不同表之間進行的,然而,在某些復雜的應用場景中,可能需要實現(xiàn)跨數(shù)據庫的關聯(lián)查詢,本文將詳細探討如何在 PostgreSQL 中實現(xiàn)這一需求,并通過示例代碼進行說明,需要的朋友可以參考下
    2024-08-08
  • 使用postgresql獲取當前或某一時間段的年月日

    使用postgresql獲取當前或某一時間段的年月日

    這篇文章主要給大家介紹了關于使用postgresql獲取當前或某一時間段的年月日的相關資料,在PostgreSQL中可以使用函數(shù) NOW() 來查詢當前時間,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-07-07
  • PostgreSQL 實現(xiàn)定時job執(zhí)行(pgAgent)

    PostgreSQL 實現(xiàn)定時job執(zhí)行(pgAgent)

    這篇文章主要介紹了PostgreSQL 實現(xiàn)定時job執(zhí)行(pgAgent),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL 慢查詢SQL跟蹤操作

    PostgreSQL 慢查詢SQL跟蹤操作

    這篇文章主要介紹了PostgreSQL 慢查詢SQL跟蹤操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL教程(十九):SQL語言函數(shù)

    PostgreSQL教程(十九):SQL語言函數(shù)

    這篇文章主要介紹了PostgreSQL教程(十九):SQL語言函數(shù),本文講解了SQL語言函數(shù)基本概念、基本類型、復合類型、帶輸出參數(shù)的函數(shù)、返回結果作為表數(shù)據源等內容,需要的朋友可以參考下
    2015-05-05
  • PotgreSQL?基于時間點恢復過程

    PotgreSQL?基于時間點恢復過程

    本篇文章介紹?PostgreSQL?基于時間點恢復(point-in-time-recover)需要的條件及恢復過程,屬于操作說明,對PotgreSQL?時間點恢復相關知識感興趣的朋友跟隨小編一起看看吧
    2023-08-08
  • postgreSQL如何設置數(shù)據庫執(zhí)行超時時間

    postgreSQL如何設置數(shù)據庫執(zhí)行超時時間

    本文我們將深入探討PostgreSQL數(shù)據庫中的一個關鍵設置SET?statement_timeout,這個設置對于管理數(shù)據庫性能和優(yōu)化查詢執(zhí)行時間非常重要,讓我們一起來了解它的工作原理以及如何有效地使用它
    2024-01-01
  • postgresql無則插入,有則更新問題

    postgresql無則插入,有則更新問題

    這篇文章主要介紹了postgresql無則插入,有則更新問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • 淺談pg_hint_plan定制執(zhí)行計劃

    淺談pg_hint_plan定制執(zhí)行計劃

    這篇文章主要介紹了淺談pg_hint_plan定制執(zhí)行計劃操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論