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

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

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

索引膨脹的幾個(gè)來源:

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

2 PostgresQL 9.0之前的版本,vacuum full 會(huì)同樣導(dǎo)致索引頁面稀疏。

3 長時(shí)間運(yùn)行的事務(wù),禁止vacuum對(duì)表的清理工作,因而導(dǎo)致頁面稀疏狀態(tài)一直保持。

查看重復(fù)索引

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;

表的大小和表中索引個(gè)數(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;

獲取每個(gè)表的行數(shù),索引和一些關(guān)于這些索引的信息(比較詳細(xì))

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;

補(bǔ)充:postgresql查看表膨脹

查看表膨脹(對(duì)所有表產(chǎn)進(jì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;

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • postgresql 日期查詢最全整理

    postgresql 日期查詢最全整理

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

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

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

    使用postgresql獲取當(dāng)前或某一時(shí)間段的年月日

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

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

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

    PostgreSQL 慢查詢SQL跟蹤操作

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

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

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

    PotgreSQL?基于時(shí)間點(diǎn)恢復(fù)過程

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

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

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

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

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

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

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

最新評(píng)論