MySQL 데이터베이스의 Row 개수와 테이블 크기 구하기


MySQL의 기본 데이터베이스인, INFORMATION_SCHEMATABLES 테이블에는 각각의 테이블에 대한 정보가 들어있습니다. SELECT 문으로 필요한 정보만 가져와보도록 하겠습니다.

쿼리문

아래의 SQL 쿼리에서 fancy_data 를 원하는 데이터베이스 이름으로 바꿔주기만 하면 됩니다.

SELECT TABLE_NAME "Tables",
    ROUND((TABLE_ROWS / 1000), 3) "Rows (K)",
    AVG_ROW_LENGTH "Row Size (Byte)",
    ROUND((DATA_LENGTH / 1024 / 1024), 3) "Data Size (MB)",
    ROUND((INDEX_LENGTH / 1024 / 1024), 3) "Index Size (MB)",
    ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 3) "Total Size (MB)"
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = "fancy_data"  /* 데이터베이스 이름 */
ORDER BY (DATA_LENGTH + INDEX_LENGTH) DESC;

결과

Result

쿼리 설명

SELECT (AS는 생략가능)

SELECT 가져올_데이터 AS "컬럼명", /*** AS는 ***/
    가져올_데이터2 AS "컬럼명2",  /* 생략가능 */
    ...

ROUND

ROUND((123.45678), 3) /* 소수점 3자리 밑에서 반올림 */
  /* -> 123.457 */    /******** 음수도 가능! ********/

FROM, WHERE, ORDER BY

FROM 데이터베이스이름.테이블이름 /* 데이터를 가져올 테이블 */
WHERE 데이터 =      /* 조건문 (일치하는 데이터 가져옴) */
ORDER BY 데이터 DESC  /* 데이터 순서로 정렬 (DESC는 내림차순) */

Reference

댓글남기기