ySQL5.6의 데이터베이스 및 테이블당 데이터 양

4596 단어 MySQLmysql5.6

개요


각 데이터베이스와 테이블이 각각 얼마나 많은 데이터를 이용했는지 조사해야 한다
information_schema.테이블을 사용합니다.
ySQL::MySQL5.6 참조 안내서::21.22INFORMATION_SCHEMA TABLES 테이블

데이터베이스당 사용량


다음 예제에서는 사용자가 탐색할 수 있는 모든 데이터베이스 크기(데이터 + 인덱스)를 연결합니다.
단위는 MB(메가바이트)이고 소수점 3위는 반올림됩니다.
SELECT 
  table_schema as 'database name' 
  ,round(SUM(data_length+index_length)/1024 /1024,2) as 'size(MB)' 
FROM 
  information_schema.tables  
GROUP BY 
  table_schema 
ORDER by 
  SUM(data_length+index_length) DESC;
실행 예

특정 데이터베이스의 테이블당 사용량


WHERE 자구의 table_schema에서 조사할 데이터베이스 이름을 지정합니다.
table_type은 일반적으로 테이블(BASE_TABLE) 또는 뷰(VIEW)를 사용합니다.
아래의 예는 통상적으로 표만 표시한다.
또한 TEMPORARY 테이블은 개체 범위에 없습니다.(information_schema.tables에 포함되지 않음)
avg_row_길이는 기록된 평균 크기다.
table_rows는 기록수를 표시합니다.yISAM의 상황은 정확하고 InnoDB의 상황은 개산입니다.
(InnoDB에서 정확하게 파악하려면 select count (*) from tablename;)
공식 수첩에서 발췌하다
InnoDB 테이블의 경우 행 개수는 SQL 최적화에 사용되는 추정치일 뿐입니다.
engine 열에는 InnoDB와 MyISAM 등이 표시됩니다.
SELECT
    table_name
    ,round((data_length + index_length) / 1024 / 1024,2) as 'total size(MB)'
    ,round((data_length) / 1024 / 1024,2) as 'data size(MB)'
    ,round((index_length) / 1024 / 1024,2) as 'index size(MB)'
    ,avg_row_length 
    ,table_rows
    ,engine
FROM
    information_schema.tables
WHERE
    table_schema = '<DATABASE NAME>'
    AND table_type = 'BASE TABLE'
ORDER BY
    (data_length + index_length) DESC
;
실행 결과 예

좋은 웹페이지 즐겨찾기