数据库数据量统计
数据库数据量统计
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();

浙公网安备 33010602011771号