查数据库和表空间大小

查数据库和表空间大小

一。postgresql数据库
1.查看schema对应的表空间
select * from pg_tables;

2.查表空间使用情况
SELECT 
    schemaname, 
    sum(pg_total_relation_size(schemaname || '.' || tablename)) AS total_size
FROM 
    pg_tables
where schemaname = 'PROD' 
group by schemaname;
SCHEMANAME	TOTAL_SIZE
PROD	257,146,904,576

3.查单表占用空间大小
SELECT 
    schemaname, 
    tablename, 
    pg_total_relation_size(schemaname || '.' || tablename) AS total_size, 
    pg_table_size(schemaname || '.' || tablename) AS table_size, 
    pg_indexes_size(schemaname || '.' || tablename) AS index_size
FROM 
    pg_tables
WHERE 
    schemaname = 'PROD' 
    AND tablename = 'AAA';
SCHEMANAME	TABLENAME	TOTAL_SIZE	TABLE_SIZE	INDEX_SIZE
PROD	AAA	140,598,222,848	44,968,099,840	95,630,123,008

一。oracle数据库
1.查看schema对应的表空间
SELECT username,default_tablespace FROM dba_users;
C##DSG	TBS_DSG
2.查表空间使用情况
select A.TABLESPACE_NAME 表空间, TOTAL 总大小, FREE 可使用, TOTAL - FREE || 'G' 已使用
from (select TABLESPACE_NAME, sum(BYTES) / 1024 / 1024 / 1024 TOTAL
      from DBA_DATA_FILES
      group by TABLESPACE_NAME) A,
     (select TABLESPACE_NAME, sum(BYTES) / 1024 / 1024 / 1024 FREE
      from DBA_FREE_SPACE
      group by TABLESPACE_NAME) B
where A.TABLESPACE_NAME = B.TABLESPACE_NAME AND A.TABLESPACE_NAME  ='TBS';
表空间	总大小	可使用	已使用
TBS	0.048828125	0.0477294922	.0010986328125G

3.查单表占用空间大小
select OWNER,T.SEGMENT_NAME||';' 表名,
       TABLESPACE_NAME 表空间,
       T.SEGMENT_TYPE 表类型,
       sum(T.BYTES / 1024 / 1024 / 1024) "占用空间(G)"
from DBA_SEGMENTS T
where T.SEGMENT_NAME = 'TMAIN'
group by OWNER, T.SEGMENT_NAME, TABLESPACE_NAME, T.SEGMENT_TYPE;
OWNER	表名	表空间	表类型	占用空间(G)
TEST	TMAIN;	TBLS_NINTH_DATA	TABLE PARTITION	190.4365844727

一。mysql数据库
1.查看schema对应的表空间
SELECT table_schema, table_name, engine, table_rows, data_length, index_length, data_free
FROM information_schema.tables
WHERE table_name = 'a1';
table_schema	table_name	engine	table_rows	data_length	index_length	data_free
uwpapp	a1	InnoDB	0	16,384	0	0
2.查表空间使用情况
select table_schema,sum(total_size) as total_size from (
SELECT 
    table_schema , 
    table_name, 
    engine, 
    table_rows, 
    data_length AS data_size, 
    index_length AS index_size, 
    data_length + index_length AS total_size
FROM 
    information_schema.tables
WHERE 
    table_schema = 'app'
) t1 
group by table_schema;
table_schema	total_size
app	780,713,984


你可能感兴趣的:(sql代码,数据库)