Background Image
질의작성
2015.12.08 00:31

테이블 용량 산정 쿼리

조회 수 7398 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
데이터 베이스를 관리 하다보면 현재 테이블의 스키마 정보를 토대로 
각 테이블 별 ROW 사이즈 및 용량을 산정하기 위한 작업이 필요할 때가 있다.

이때 편리하게 용량 산정을 위한 쿼리를 생각해 보았다.
테이블명, 컬럼수, 실제_스키마_ROW_사이즈(byte)가 기본 정보이며
특정 컬럼이 테이블 ROW 사이즈를 많이 잡아 먹는지에 대한 추가정보(예제에는 100 PREC 이상)
와 파티션이 된 테이블인지와 파티션 컬럼이 무었인지 확인 하게 되어 있다.

SELECT 
c.class_name,
COUNT(*) AS count_column,
CAST(SUM(CASE
WHEN "data_type" = 'BIGINT' THEN 8.0
WHEN "data_type" = 'INTEGER' THEN 4.0
WHEN "data_type" = 'SMALLINT' THEN 2.0
WHEN "data_type" = 'FLOAT' THEN 4.0
WHEN "data_type" = 'DOUBLE' THEN 8.0
WHEN "data_type" = 'MONETARY' THEN 12.0
WHEN "data_type" = 'STRING' THEN a.prec
WHEN "data_type" = 'VARCHAR' THEN a.prec
WHEN "data_type" = 'NVARCHAR' THEN a.prec
WHEN "data_type" = 'CHAR' THEN a.prec
WHEN "data_type" = 'NCHAR' THEN a.prec
WHEN "data_type" = 'TIMESTAMP' THEN 8.0
WHEN "data_type" = 'DATE' THEN 4.0
WHEN "data_type" = 'TIME' THEN 4.0
WHEN "data_type" = 'DATETIME' THEN 4.0
WHEN "data_type" = 'BIT' THEN FLOOR(prec / 8.0)
WHEN "data_type" = 'BIT VARYING' THEN FLOOR(prec / 8.0)
ELSE 0
END) AS BIGINT) AS [size_column(byte)],
SUM(CASE
WHEN "data_type" = 'STRING' THEN 1
WHEN "data_type" = 'VARCHAR' THEN 1
WHEN "data_type" = 'NVARCHAR' THEN 1
WHEN "data_type" = 'NCHAR' THEN 1
WHEN "data_type" = 'BIT VARYING' THEN 1
ELSE 0
END) AS count_size_over_column,
v.cols AS size_over_columns,
MAX(c.partitioned) AS partitioned,
CONCAT(MAX(p.partition_type), MAX(p.partition_expr)) AS partition_info
FROM
db_class c 
JOIN db_attribute a ON a.class_name = c.class_name AND a.from_class_name IS NULL
LEFT JOIN db_partition p ON p.class_name = a.class_name
LEFT JOIN (
SELECT class_name, GROUP_CONCAT(cols) AS cols
FROM (
SELECT class_name, CONCAT(attr_name,' ', [data_type], '(', prec,')') AS cols 
FROM db_attribute
WHERE [data_type] IN ('STRING', 'VARCHAR', 'NVARCHAR', 'NCHAR', 'BIT VARYING')
AND prec >= 100
) z
GROUP BY class_name
) v ON v.class_name = a.class_name
WHERE
c.is_system_class = 'NO'
AND c.class_type = 'CLASS'
AND c.class_name <> '_cub_schema_comments'
GROUP BY
c.class_name,
v.cols;

위의 예제 쿼리로 CUBRID 설치 시 demodb의 ROW 사이즈별 용량은 다음과 같다.

class_name

count_column

size_column(byte)

count_size_over_column 

partitioned 

partition_info

 

 

 athlete

 5

 78

 2

 

 NO

 

 

 code

 3

 7

 1

 

 NO

 

 

 event

 5

 109

 2

 

 NO

 

 

 game

 7

 24

 0

 

 NO

 

 

 history

 5

 63

 3

 

 NO

 

 

 nation

 4

 83

 3

 

 NO

 

 

 olympic

 8

 1632

 5

 introduction STRING(1500)

 NO

 

 

 participant

 5

 19

 0

 

 NO

 

 

 record

 6

 38

 2

 

 NO

 

 

 stadium

 6

 161

 2

 address STRING(100)

 NO

 

 



  1. 한건의 데이타를 여러건으로 조회하는 쿼리입니다.

    Date2012.03.30 Category질의작성 By권호일 Views9419
    Read More
  2. 한 호스트내의 DB경로 변경 방법

    Date2010.02.19 Category운영관리 Byjanus Views12268
    Read More
  3. 한 개 PC에서 CUBRID7.3과 CUBRID2008R1.4 & R2.0 매니저 사용 방법

    Date2009.12.12 CategoryCUBRID 매니저 By정만영 Views13054
    Read More
  4. 패키지 형태로 생성된 JAVA class를 JAVA SP에서 사용하기

    Date2010.02.26 Category응용개발 By손승일 Views18375
    Read More
  5. 테이블에 comment 사용하기

    Date2010.01.01 Category기타 By남재우 Views21051
    Read More
  6. 테이블 컬럼 변경 및 추가

    Date2016.02.29 Category질의작성 By정만영 Views21855
    Read More
  7. 테이블 용량 산정 쿼리

    Date2015.12.08 Category질의작성 By성진 Views7398
    Read More
  8. 테이블 사용량 확인방법

    Date2015.02.03 Category운영관리 By정만영 Views11453
    Read More
  9. 테이블 명세서 한 시트로 합치기

    Date2015.12.24 CategoryCUBRID 매니저 By성진 Views16526
    Read More
  10. 테이블 명세서 쿼리

    Date2017.08.04 Category질의작성 By성진 Views3180
    Read More
  11. 테이블 리스트 취합 SQL

    Date2016.03.19 Category질의작성 By김창휘 Views5522
    Read More
  12. 테이블 데이터 복사 하기

    Date2009.03.14 Category질의작성 By정만영 Views22301
    Read More
  13. 타 DBMS를 CUBRID로 마이그레이션 시 varchar,char 컬럼 사이즈 관련

    Date2010.07.01 Category마이그레이션 By손승일 Views38025
    Read More
  14. 타 DB 에서 마이그레이션시 질의 변경 샘플 - CASE 문

    Date2009.12.31 Category마이그레이션 By웁쓰 Views21924
    Read More
  15. 큐브리드와 hostname 관계

    Date2009.06.25 Category운영관리 By정만영 Views18584
    Read More
  16. 큐브리드매니져를 이용한 데이터베이스 자동 백업

    Date2009.04.01 Category운영관리 By남재우 Views19052
    Read More
  17. 큐브리드 포트 정리

    Date2016.07.05 Category운영관리 By정만영 Views6093
    Read More
  18. 큐브리드 서비스 재구동 시 cubrid manager server start: fail 오류 해결 방법

    Date2015.12.16 Category운영관리 By진우진 Views7734
    Read More
  19. 큐브리드 사용포트 정리

    Date2009.06.19 Category운영관리 By정만영 Views29776
    Read More
  20. 큐브리드 복제 구성 시 마스터 데이터베이스 백업 주의사항

    Date2010.02.11 Category운영관리 By정만영 Views12591
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 14 Next
/ 14

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales