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


144

웹 호스트를 선택하기 위해 MySQL 데이터베이스가 얼마나 많은 공간을 사용하고 있는지 알고 싶습니다. 나는 명령을 찾았 SHOW TABLE STATUS LIKE 'table_name'으므로 쿼리를 할 때 다음과 같은 것을 얻습니다.

Name       | Rows | Avg. Row Length | Data_Length | Index Length
----------   ----   ---------------   -----------   ------------
table_name   400          55            362000        66560
  • 숫자는 반올림됩니다.

그래서 내가해야합니까 362,000 또는 400 * 362,000 = 144,800,000 이 테이블 바이트의 데이터를? 그리고 색인 길이는 무엇을 의미합니까? 감사 !


당신은 362,000 + 66560.의 data_length + 인덱스 길이있다
mandza


이 페이지는 당신에게 정확한 답변을 줄 것입니다 rathishkumar.in/2017/12/…
Rathish

답변:


281

S. Prakash는 MySQL 포럼 에서 찾을 수 있습니다 .

SELECT table_schema "database name",
    sum( data_length + index_length ) / 1024 / 1024 "database size in MB",
    sum( data_free )/ 1024 / 1024 "free space in MB"
FROM information_schema.TABLES
GROUP BY table_schema; 

또는보다 쉬운 복사 붙여 넣기를 위해 한 줄로 :

SELECT table_schema "database name", sum( data_length + index_length ) / 1024 / 1024 "database size in MB", sum( data_free )/ 1024 / 1024 "free space in MB" FROM information_schema.TABLES GROUP BY table_schema; 

7
여유 공간 (MB)이란 무엇입니까? 100GB의 여유 공간이 있지만 1GB 미만의 여유 공간이 있다고보고합니다.
Barth

1
@Barth는 당 문서 는 "InnoDB 테이블 바이트의 여유 공간"을 의미한다. 불행하게도 아무런 설명은 무엇 없다 수단 : - \
ckujau

13
바이트 단위의 여유 공간은 정확히 의미합니다. 즉, 테이블을 최적화하거나 처음부터 테이블을 다시 작성하면 공간의 양을 회수 할 수 있습니다. 데이터베이스가 디스크에 정보를 저장하면 정보를 블록으로 할당합니다. 레코드를 삭제하면 사용 된 블록간에 블록이 해제되는 경우가 많으며 해당 공간을 사용하기 위해 다른 모든 블록을 이동하여 "무료"로 표시하는 것은 매우 비쌉니다. 공간은 나중에 데이터베이스 엔진 자체에서 사용하거나 OPTIMIZE TABLE foo(MyISAM)을 사용하여 회수 하거나 InnoDB 테이블을 재생성 + 분석 할 수 있습니다.
16:35에

92

Mysql 클라이언트에서 다음 명령을 실행하여 Mysql 데이터베이스의 크기를 얻을 수 있습니다.

SELECT  sum(round(((data_length + index_length) / 1024 / 1024 / 1024), 2))  as "Size in GB"
FROM information_schema.TABLES
WHERE table_schema = "<database_name>"

30

phpMyAdmin을 사용하면이 정보를 알려줄 수 있습니다.

"데이터베이스"(맨 위 메뉴)로 이동하여 "통계 사용"을 클릭하십시오.

다음과 같은 것을 보게 될 것입니다 :

phpMyAdmin 스크린 샷

크기가 커질수록 정확도가 떨어질 수 있지만 목적에 맞게 정확해야합니다.


현재 000webhost를 사용하고 있습니다. phpMyAdmin이 있지만 "통계 사용"확인란을 찾을 수 없습니다. 그것에 대한 쿼리가 있습니까?
marvin

1
@marvin 글쎄, 웹 호스트에 phpMyAdmin의 이전 버전이 설치되어있을 수 있습니다. 이 기능이 어떤 버전으로 도입되었는지 모르겠습니다.
Radu Murzea

사이드 바에서 상단의 홈 아이콘을 클릭하면 홈 페이지로 이동합니다. 오른쪽 창에서 '데이터베이스'를 클릭하십시오. 데이터베이스의 한 열 테이블을 표시합니다. 아래에는 '통계 사용'이라는 링크가 있습니다.
VeeK

8

MB 단위로 찾으려면이 작업을 수행하십시오.

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; 

이 답변의 SQL 스 니펫은 stackoverflow.com/a/1733523/1200542
Ariel Allon

3

기본적으로 쿼리 DB (데이터 길이 + 인덱스 길이) 또는 검사 파일 크기의 두 가지 방법이 있습니다. 인덱스 길이는 인덱스에 저장된 데이터와 관련이 있습니다.

모든 것이 여기에 설명되어 있습니다 :

http://www.mkyong.com/mysql/how-to-calculate-the-mysql-database-size/


글쎄,이 페이지는 내 질문의 원천입니다. 그러나이 쿼리에 따르면 0.5MB가있어 꽤 안전합니다. 나는 그것이 사실이기를 바랍니다 :) 감사합니다!
marvin

0

답은 오버 헤드 크기와 테이블의 메타 데이터 크기를 포함하지 않습니다.

다음은 데이터베이스에 의해 할당 된 "디스크 공간"에 대한보다 정확한 추정입니다.

SELECT ROUND((SUM(data_length+index_length+data_free) + (COUNT(*) * 300 * 1024))/1048576+150, 2) AS MegaBytes FROM information_schema.TABLES WHERE table_schema = 'DATABASE-NAME'

5
좀 더 자세히 설명해 주시겠습니까? 특히 상수 300150?
Melebius

좀 더 자세히 설명해 주시겠습니까?
Allan Andrade



0

MySql Workbench를 사용하는 경우 데이터베이스 크기, 각 테이블 크기, 인덱스 크기 등 모든 세부 정보를 쉽게 얻을 수 있습니다.

  1. 스키마를 마우스 오른쪽 버튼으로 클릭
  2. 선택 스키마 검사기 옵션을

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

  3. 스키마 크기의 모든 세부 사항을 표시합니다

  4. 각 테이블의 크기를 보려면 테이블 탭을 선택 하십시오.

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

  5. 데이터 길이 열에서 표시된 테이블 크기


0

모든 MySQL 데이터베이스의 크기를 찾으려면이 명령을 사용하면 각각의 크기가 MB 단위로 표시됩니다.

SELECT table_schema "database", sum(data_length + index_length)/1024/1024 "size in MB" FROM information_schema.TABLES GROUP BY table_schema;

큰 데이터베이스가있는 경우 다음 명령을 사용하여 결과를 기가 바이트로 표시 할 수 있습니다.

SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES GROUP BY table_schema;

예를 들어 특정 데이터베이스의 크기 만 표시하려는 경우 YOUR_DATABASE_NAME다음 쿼리를 사용할 수 있습니다.

SELECT table_schema "database", sum(data_length + index_length)/1024/1024/1024 "size in GB" FROM information_schema.TABLES WHERE table_schema='YOUR_DATABASE_NAME' GROUP BY table_schema;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.