MySQL 데이터베이스의 크기를 얻는 방법?


542

MySQL 데이터베이스의 크기를 얻는 방법?
대상 데이터베이스가 "v3"이라고 가정하십시오.


여기에 제공된 스크립트가 도움이 될 특정 테이블 / 특정 데이터베이스 크기에 대한 정보는 information_schema.tables 테이블에서 계산됩니다. 자세한 답변은 여기를 참조하십시오 rathishkumar.in/2017/12/…
Rathish

답변:


1185

이 쿼리를 실행하면 원하는 것을 얻을 수 있습니다.

SELECT table_schema "DB Name",
        ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB" 
FROM information_schema.tables 
GROUP BY table_schema; 

이 쿼리 는보다 포괄적 인 지침이 있는 mysql forums 에서 온 것입니다.


4
데이터베이스의 테이블에서 대부분의 데이터를 삭제 한 후에도 크기는 동일하게 유지됩니다.
Vidz

2
@Vidz는 InnoDB 엔진을 사용하고 있습니다. 그렇게하면 file_per_table 및 alter table을 사용하지 않으면 공간을 확보 할 수 있습니다.
mandza

5
이 방법은 완전히 비어있는 데이터베이스를 반환하지 않으므로 데이터베이스가 결과에 나타나려면 최소한 하나의 테이블이 있어야합니다.
v010dya 2014

13
하나의 데이터베이스에서 선택하려면 사이에이를 추가 FROM하고 GROUP라인 : where table_schema='DATABASE_NAME'- 대체 DATABASE_NAME데이터베이스와 함께.
KJ 가격

2
참고 : MySQL Workbench는 Syntax error: {column title} (double quoted text) is not valid input here.오류를 뱉어냅니다 . 열 제목은 눈금으로 싸야합니다. 즉 Database Name.
KareemElashmawy

75

다음 MySQL 명령을 사용하여 확인할 수 있습니다

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 AS "Size (MB)" FROM information_schema.TABLES GROUP BY table_schema

결과

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

GB로 결과 얻기

SELECT table_schema AS "Database", SUM(data_length + index_length) / 1024 / 1024 / 1024 AS "Size (GB)" FROM information_schema.TABLES GROUP BY table_schema

2
좋은. 나는이 답변을 좋아한다.
progfan

31

또는을 사용하는 경우 phpMyAdmin데이터베이스 structure탭 의 바닥 글에서 테이블 크기의 합계를 살펴볼 수 있습니다 . 실제 데이터베이스 크기는이 크기보다 약간 클 수 있지만 table_schema위에서 언급 한 방법 과 일치하는 것으로 보입니다 .

스크린 샷 :

여기에 이미지 설명을 입력하십시오


26

또는 데이터 디렉토리로 직접 이동하여 v3.myd, v3의 결합 된 크기를 확인할 수 있습니다. myi와 v3. frm 파일 (myisam의 경우) 또는 v3.idb & v3.frm (inonodb의 경우).


7
참고 : ibd 파일은 innodb_file_per_table을 사용하는 경우에만 존재
Slashterix

2
이 답변은 스토리지 엔진에만 해당됩니다. @ brian-willis의 답변이 더 적절합니다.
Manu Manjunath

15

MB 단위로 결과를 얻으려면

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2)) AS "SIZE IN MB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

GB 단위로 결과를 얻으려면 :

SELECT
SUM(ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024 / 1024), 2)) AS "SIZE IN GB"
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = "SCHEMA-NAME";

11
mysqldiskusage  --server=root:MyPassword@localhost  pics

+----------+----------------+
| db_name  |         total  |
+----------+----------------+
| pics     | 1,179,131,029  |
+----------+----------------+

설치되지 않은 경우 mysql-utils대부분의 주요 배포에 의해 패키지되어야 하는 패키지를 설치하여 설치할 수 있습니다 .


4

처음으로 MySQL에 로그인

mysql -u username -p

테이블과 함께 단일 데이터베이스의 크기를 MB 단위로 표시하는 명령입니다.

SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;

database_name을 데이터베이스로 변경하십시오.

크기가 MB 인 모든 데이터베이스를 표시하는 명령입니다.

SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;

1

mysql 데이터 디렉토리로 이동하여 실행하십시오. du -h --max-depth=1 | grep databasename

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.