查找数据库中表的大小

SELECT 
    t.NAME AS TableName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, p.Rows
ORDER BY 
    UsedSpaceKB desc
在 GaussDB 中设置表空间大小主要是为了管理磁盘资源,确保数据库表的存储需求。以下是设置表空间大小的基本步骤: 1. **确定目标表空间**: 首先你需要知道你要调整哪个表空间的大小。可以在 `pg_class` 表中查找表对应的数据文件所在的表空间,例如,如果你想知道用户表 `users` 所在的表空间,可以运行: ```sql SELECT pg_size_pretty(pg_total_relation_size('users')) AS total_size, pg_tablespace_location('users') AS location; ``` 2. **了解现有大小和限制**: 查看当前表空间的大小和最大可用大小。如果是系统管理员,可以查看系统全局参数;如果是普通用户,则可能需要联系管理员: ```sql SELECT setting, unit, value FROM pg_settings WHERE name = 'max_tablespace_size'; // 查看最大表空间大小 SELECT pg_tablespace_size(tabspacename); // 查看实际大小 ``` 3. **增加表空间大小**: 使用 `ALTER DATABASE` 或 `ALTER TABLESPACE` 命令来增加表空间大小。假设你想增加 `my_tablespace` 的大小至 50GB: ```sql -- 对于整个数据库 ALTER DATABASE my_database SET TABLESPACE my_tablespace SIZE +50GB; -- 或者指定单个表 ALTER TABLE my_table SET TABLESPACE my_tablespace RELOCATE; ``` 注意,表空间的增加不是立即生效的,它会等到下一个事务结束才会生效。同时,如果表空间已被其他表占用,可能需要先释放一些空间。 4. **验证更改**:再次运行 `pg_tablespace_size` 或 `dbstat` 来检查表空间的新大小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值