database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 9786 게시물 읽기
No. 9786
postgres table 조회 쿼리문 질문입니다.
작성자
postgres
작성일
2017-04-07 18:03ⓒ
2017-04-07 18:05ⓜ
조회수
7,037

 postgres 특정 Database 안에 있는 특정 schema에 있는 table들을 용량순으로 조회하고싶은데 

쿼리를 모르겠습니다...

mysql상에선 

 select table_name,data_length from information_schema.tables where table_schema='public' order by 2;

이렇게 쿼리 입력하면 조회가 가능하거든요..

 

postgres에선 해당 쿼리를 그대로 입력하면

ERROR: column "data_length" does not exist

이렇게 에러가 발생합니다..

 

답변 부탁드립니다~!

 

이 글에 대한 댓글이 총 2건 있습니다.

PostgreSQL에서 사용하고 있는 객체들의 정보는 시스템 카탈로그라는 이름으로 제공되며,

이것들은 pg_catalog 스키마 안에 뷰와 테이블로 존재합니다.

 

테이블의 크기라는 것이 좀 애매합니다. 인덱스를 포함해야 하는지, 테이블 자체만을 이야기하는지, 테이블에 저장된 확장된 자료(PostgreSQL에서는 그것을 토스트라 합니다)까지 포함을 해야하는지

이렇게 생각보다 단순하지 않습니다.

 

그래서, 그것들을 좀 더 쉽게 계산하기 위해서 각종 함수들을 제공합니다.

해당 함수는

http://postgresql.kr/docs/current/functions-admin.html#FUNCTIONS-ADMIN-DBSIZE

페이지에서 자세히 소개하고 있습니다.

 

여기서 주의해야 할 부분은 이 함수들이 호출되고 있는 해당 테이블의 자료 변경 작업이 일어난다면, 그 작업들은 해당 크기 계산 함수가 끝날 때까지 기다릴 수도 있습니다. (모두 확인해 보질 않아서 정확하게 어느 놈인지는 모르겠습니다.)

 

그냥 정말 단순하게 생각해서는

select table_name, pg_total_relation_size(table_schema || '.' || table_name)

from information_schema.tables

where table_schema = 'public'

  and table_type = 'BASE TABLE' order by 2;

 

이런식이 되겠네요.

노파심에 덧붙이면,

만일 데이터베이스 모니터링 도구를 만드는데, 이런 쿼리를 쓰는 것은 권장하지 않습니다. :)

 

김상기(ioseph)님이 2017-04-07 23:55에 작성한 댓글입니다.

 답변 감사합니다^^

postgres님이 2017-04-10 11:30에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
9789PostgreSQL 패스워드 검증 방법 [8]
검콤이
2017-04-19
6753
9788PostgreSQL 백업질문 (장애입니다ㅠ) [2]
검콤이
2017-04-18
6983
9787PostgreSQL 날짜질문 [2]
검콤이
2017-04-17
6726
9786postgres table 조회 쿼리문 질문입니다. [2]
postgres
2017-04-07
7037
9785시간이 오래 걸리는 쿼리 질문 [1]
검콤이
2017-04-07
7316
9784테이블 생성 기본키와 인덱스 관계문의 드립니다. [1]
김범식
2017-04-06
7006
9783event trigger 질문 [4]
검콤이
2017-04-04
6715
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다