监控序列以及表大小

news/2024/7/9 21:20:06 标签: postgresql

文章目录

  • 监控序列以及表大小
    • 序列超过 10 w 的表
    • 表大小大于 10M 的表

监控序列以及表大小

序列超过 10 w 的表

select schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
from pg_tables where pg_total_relation_size(schemaname||'.'||tablename) > 10000000  -- 大于 10M 的表
and schemaname<>'pg_catalog';


test2=# --序列超过 10 w 的表
test2=# with t as (select schemaname, sequencename ,last_value, schemaname||'.' || split_part(sequencename,'_',1)  as owned_by_table from pg_sequences where last_value>100000) 
test2-# select * , pg_size_pretty(pg_total_relation_size(owned_by_table)) as table_size   from t order by last_value desc, pg_total_relation_size(owned_by_table) desc;
 schemaname | sequencename | last_value | owned_by_table | table_size 
------------+--------------+------------+----------------+------------
 public     | test2_id_seq |    1000000 | public.test2   | 42 MB
(1 row)

-- 假设 业务对象都在 public 模式下, 那么我们在查询与拼接的时候, 可以忽略 schema 的处理, 
-- 对于大数据量, 可以提供性能
CREATE OR REPLACE FUNCTION func_monitor_large_sequences2(seq_size_limit  bigint default 100000)
RETURNS setof large_sequece
AS 
$BODY$ 
DECLARE
BEGIN
	return query 
	with t1 as (
		select schemaname, sequencename ,last_value
        --, schemaname||'.' || split_part(sequencename,'_',1)  as owned_by_table, split_part(sequencename,'_',2) column_name 
		from pg_sequences where last_value>seq_size_limit
    )             
    select 
        t1.schemaname::text, 
        t1.sequencename::text ,
        t1.last_value::bigint, 
        t2.table_name::text as owned_by_table, 
        t2.column_name::text ,
        t2.data_type::text,
        pg_size_pretty(pg_total_relation_size(t2.table_name::text))::TEXT
    from t1 join 
    (
        SELECT table_schema,table_name, column_name, column_default, split_part(column_default::text,$$'$$,2) as sequence_name, data_type
        FROM information_schema.columns
    ) t2 on (t2.sequence_name = t1.sequencename);
END;
$BODY$ LANGUAGE plpgsql;
 
-- 使用实例:
select * from func_monitor_large_sequences2(1000000);
test2=# select * from func_monitor_large_sequences2();
 schemaname |  tablename   | current_value | owned_by_table | column_name | data_type | table_size 
------------+--------------+---------------+----------------+-------------+-----------+------------
 public     | test2_id_seq |       1000000 | test2          | id          | integer   | 42 MB
 public     | test4_id_seq |       1000000 | test4          | id          | integer   | 42 MB
 public     | seq_xx_id    |       1000000 | test5          | id          | integer   | 64 MB
(3 rows)

表大小大于 10M 的表

test2=# 
test2=# select schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size
test2-# from pg_tables where pg_total_relation_size(schemaname||'.'||tablename) > 10000000  -- 大于 10M 的表
test2-# and schemaname<>'pg_catalog';
 schemaname | tablename | size  
------------+-----------+-------
 public     | test2     | 42 MB
 public     | test3     | 64 MB
(2 rows)

test2=# analyse test2, test3;
ANALYZE

test2=# select schemaname, relname, n_live_tup  from pg_stat_user_tables where relname in('test2','test3') ;                                                                                            
 schemaname | relname | n_live_tup 
------------+---------+------------
 public     | test2   |    1000000
 public     | test3   |    1000000
(2 rows)

生产环境, 可以适当调大些


http://www.niftyadmin.cn/n/4963184.html

相关文章

微信开发之一键删除朋友圈评论的技术实现

简要描述&#xff1a; 删除某条朋友圈的某条评论 请求URL&#xff1a; http://域名地址/snsCommentDel 请求方式&#xff1a; POST 请求头Headers&#xff1a; Content-Type&#xff1a;application/jsonAuthorization&#xff1a;login接口返回 参数&#xff1a; 参数…

Docker 微服务实战

1. 通过IDEA新建一个普通微服务模块 1.1 建Module docker_boot 1.2 改写pom <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&…

突破成本困局:B站FinOps经验与案例分享

云成本优化&#xff08;FinOps&#xff09;一词&#xff0c;变得越来越流行。 在Google Trends上&#xff0c;“FinOps”关键字的搜索量在2019年到2023年的四年间增长了410倍。在国外&#xff0c;有18000多人把FinOps技能列在了自己的LinkedIn简历里。CNCF发布的云原生2023年趋…

【第三阶段】kotlin语言内置函数with

1.with基本上和run一样&#xff0c;只是使用方式不一致 info.run、with(info) 2.with函数返回类型是根据匿名函数最后一行的类型变化而变化 with 函数里面持有的是this 3.具名操作 package Stage3fun main() {val info"kotlin"//具名操作//thisinfo 等价info传入…

算法随笔:强连通分量

概念和性质&#xff1a; 强连通&#xff1a;在有向图G中&#xff0c;如果两个点u和v是互相可达的&#xff0c;即从u出发可以到达v&#xff0c;从v出发也可以到达u&#xff0c;则成u和v是强连通的。 强连通分量&#xff1a;如果一个有向图G不是强连通图&#xff0c;那么可以把它…

Viewpager2的简单使用

Viewpager2的简单使用 MainActivity.java public class MainActivity extends AppCompatActivity {private static final String TAG "MainActivity";private ViewPager2 mViewPager;private int[] iconsSelected new int[]{R.drawable.item_selected_one, R.dra…

【大数据】Hive 中的批量数据导入

Hive 中的批量数据导入 在博客【大数据】Hive 表中插入多条数据 中&#xff0c;我简单介绍了几种向 Hive 表中插入数据的方法。然而更多的时候&#xff0c;我们并不是一条数据一条数据的插入&#xff0c;而是以批量导入的方式。在本文中&#xff0c;我将较为全面地介绍几种向 H…

python特殊函数之__call__函数的作用

作用 将一个类实例也可以变成一个可调用对象。 详解 __call__ 是 Python 中一个魔术方法&#xff08;magic method&#xff09;&#xff0c;它用于定义对象的函数调用行为。换句话说&#xff0c;当你尝试调用一个具有 __call__ 方法的对象时&#xff0c;Python 会自动调用该…