[mysql] 특정 MySQL 테이블이 차지하는 디스크 공간을 어떻게 확인할 수 있습니까?

특정 MySQL 테이블이 차지하는 디스크 공간을 결정하는 빠른 방법이 있습니까? 테이블은 MyISAM 또는 Innodb 일 수 있습니다.



답변

테이블의 mydb.mytable경우 다음을 위해 이것을 실행하십시오.

바이트

SELECT (data_length+index_length) tablesize
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

킬로바이트

SELECT (data_length+index_length)/power(1024,1) tablesize_kb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

메가 바이트

SELECT (data_length+index_length)/power(1024,2) tablesize_mb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

기가 바이트

SELECT (data_length+index_length)/power(1024,3) tablesize_gb
FROM information_schema.tables
WHERE table_schema='mydb' and table_name='mytable';

일반적인

다음은 최대 단위 표시가 TB (TeraBytes) 인 일반 쿼리입니다.

SELECT
    CONCAT(FORMAT(DAT/POWER(1024,pw1),2),' ',SUBSTR(units,pw1*2+1,2)) DATSIZE,
    CONCAT(FORMAT(NDX/POWER(1024,pw2),2),' ',SUBSTR(units,pw2*2+1,2)) NDXSIZE,
    CONCAT(FORMAT(TBL/POWER(1024,pw3),2),' ',SUBSTR(units,pw3*2+1,2)) TBLSIZE
FROM
(
    SELECT DAT,NDX,TBL,IF(px>4,4,px) pw1,IF(py>4,4,py) pw2,IF(pz>4,4,pz) pw3
    FROM
    (
        SELECT data_length DAT,index_length NDX,data_length+index_length TBL,
        FLOOR(LOG(IF(data_length=0,1,data_length))/LOG(1024)) px,
        FLOOR(LOG(IF(index_length=0,1,index_length))/LOG(1024)) py,
        FLOOR(LOG(IF(data_length+index_length=0,1,data_length+index_length))/LOG(1024)) pz
        FROM information_schema.tables
        WHERE table_schema='mydb'
        AND table_name='mytable'
    ) AA
) A,(SELECT 'B KBMBGBTB' units) B;

시도 해봐 !!!


답변

상위 20 개의 가장 큰 테이블을 MB 단위로 가져 오는 빠른 SQL

SELECT table_schema, table_name,
  ROUND((data_length+index_length)/POWER(1024,2),2) AS tablesize_mb
FROM information_schema.tables
ORDER BY tablesize_mb DESC LIMIT 20;

누군가에게 도움이 되길 바랍니다!


답변

이것은 InnoDB 테이블에는 정확하지 않습니다. 디스크의 크기는 실제로 쿼리를 통해보고 된 크기보다 큽니다.

자세한 내용은 Percona의이 링크를 참조하십시오.

https://www.percona.com/blog/2008/12/16/how-much-space-does-empty-innodb-table-take/


답변

기본적으로 mysql이 설치된 Linux에서 :

[you@yourbox]$ ls -lha /var/lib/mysql/<databasename>

NIXCRAFT의 mysql db 위치 에 기반


답변

RolandMySQLDBA의 답변을 기반으로 위의 내용을 사용하여 테이블의 각 스키마 크기를 얻을 수 있다고 생각합니다.

SELECT table_schema, SUM((data_length+index_length)/power(1024,1)) tablesize_kb
    FROM information_schema.tables GROUP BY table_schema;

정말 좋아했습니다!


답변

아마도 파일 크기를 볼 수 있습니다 …

각 테이블은 데이터베이스라고하는 이름을 가진 폴더 안에 별도의 두 파일로 저장됩니다. 이 폴더는 mysql 데이터 디렉토리에 저장됩니다.

거기에서 ‘du -sh. *’를 수행하여 디스크의 테이블 크기를 얻을 수 있습니다.


답변

에서 촬영 내 데이터베이스가 사용하고있는 디스크 공간을 확인하려면 어떻게합니까?

phpMyAdmin왼쪽 프레임에서 데이터베이스 이름을 클릭하고 오른쪽 프레임에서 거기에있는 테이블의 크기를 읽음으로써 제어판 에서 MySQL 테이블 크기를 확인할 수 있습니다 .

아래 쿼리는 동일한 정보를 얻는 데 도움이됩니다. bytes

select SUM(data_length) + SUM(index_length) as total_size
from information_schema.tables
where table_schema = 'db_name'
and table_name='table_name';