数据库数据量统计

数据库数据量统计

PostgreSQL 统计

统计存储空间

查询:

-- PostgreSQL 统计数据库表占用的磁盘空间
SELECT table_name,
  pg_total_relation_size (table_name) AS total_size 
FROM
  information_schema.tables 
WHERE
  table_type = 'BASE TABLE' 
  AND table_schema = 'public' -- 替换为你要统计的模式名
ORDER BY
  table_name ASC;

返回:total_name 和 total_size

统计条目数(准确值)

创建函数:

-- 统计数据库中的表数据行数,默认取当前模式,也可以传入其他模式
CREATE OR REPLACE FUNCTION get_table_row_counts(schema_name text DEFAULT current_schema())
  RETURNS TABLE (table_name text, row_count bigint) 
  LANGUAGE plpgsql AS
$$
DECLARE
  tbl_name text;
BEGIN
  FOR tbl_name IN
    SELECT t.table_name
    FROM information_schema.tables t
    WHERE t.table_schema = schema_name
      AND t.table_type = 'BASE TABLE'
    ORDER BY t.table_name
  LOOP
    RETURN QUERY EXECUTE format(
      'SELECT %L, COUNT(*) FROM %I.%I',
      tbl_name, schema_name, tbl_name
    );
  END LOOP;
END
$$;

调用函数:

select * from get_table_row_counts();

返回:table_name,row_count,以 table_name 降序排序

统计条目数

-- PostgreSQL 统计数据库表条目数,近似值
SELECT 
    relname AS table_name,
    reltuples::bigint AS row_count
FROM 
    pg_class
JOIN 
    pg_namespace ON pg_class.relnamespace = pg_namespace.oid
WHERE 
    nspname = 'public' -- 替换为你要统计的模式名
    AND relkind = 'r';

MySQL 统计

统计存储空间

-- MySQL 统计数据库表占用的磁盘空间
SELECT 
    table_name,
    (data_length + index_length) as total_size
FROM
  information_schema.tables 
WHERE
  table_type = 'BASE TABLE' 
  AND table_schema = DATABASE() -- 可替换为你要统计的数据库名
ORDER BY
  table_name ASC;

统计条目数

-- MySQL 统计数据库表条目数,近似值
SELECT 
    table_name,
    table_rows as row_count
FROM 
    information_schema.tables
WHERE 
    table_schema = DATABASE();
posted @ 2025-03-06 17:25  Nihaorz  阅读(59)  评论(0)    收藏  举报