[mysql] MySQL 데이터베이스의 테이블 크기를 얻는 방법은 무엇입니까?

이 쿼리를 실행하여 MySQL 데이터베이스의 모든 테이블 크기를 얻을 수 있습니다.

show table status from myDatabaseName;

결과를 이해하는 데 도움이 필요합니다. 가장 큰 크기의 테이블을 찾고 있습니다.

어떤 열을보아야합니까?



답변

이 쿼리를 사용하여 테이블의 크기를 표시 할 수 있습니다 (변수를 먼저 대체해야 함).

SELECT
    table_name AS `Table`,
    round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
    AND table_name = "$TABLE_NAME";

또는이 쿼리는 모든 데이터베이스에서 모든 테이블의 크기를 나열합니다.

SELECT
     table_schema as `Database`,
     table_name AS `Table`,
     round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
ORDER BY (data_length + index_length) DESC;


답변

SELECT TABLE_NAME AS "Table Name",
table_rows AS "Quant of Rows", ROUND( (
data_length + index_length
) /1024, 2 ) AS "Total Size Kb"
FROM information_schema.TABLES
WHERE information_schema.TABLES.table_schema = 'YOUR SCHEMA NAME/DATABASE NAME HERE'
LIMIT 0 , 30

information_schema “-> SCHEMATA 테이블-> ” SCHEMA_NAME “열 에서 스키마 이름을 얻을 수 있습니다.


추가 다음과 같이 mysql 데이터베이스의 크기를
얻을 수 있습니다 .

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; 

결과

DB Name              |      DB Size in MB

mydatabase_wrdp             39.1
information_schema          0.0

당신은 할 수 있습니다 여기에서 추가 정보를 얻을.


답변

SELECT
    table_name AS "Table",
    round(((data_length + index_length) / 1024 / 1024), 2) as size
FROM information_schema.TABLES
WHERE table_schema = "YOUR_DATABASE_NAME"
ORDER BY size DESC; 

크기를 정렬합니다 (DB 크기 (MB)).


답변

쿼리에서 현재 선택된 데이터베이스를 사용하려는 경우 이 검색어를 복사하여 붙여 넣기 만하면됩니다. (수정 필요 없음)

SELECT table_name ,
  round(((data_length + index_length) / 1024 / 1024), 2) as SIZE_MB
FROM information_schema.TABLES
WHERE table_schema = DATABASE() ORDER BY SIZE_MB DESC;


답변

Workbench를 사용하여 많은 정보를 얻는 쉬운 방법이 있습니다.

  • 스키마 이름을 마우스 오른쪽 단추로 클릭하고 “스키마 관리자”를 클릭하십시오.

  • 결과 창에는 여러 개의 탭이 있습니다. 첫 번째 탭 “정보”는 대략적인 데이터베이스 크기 (MB)를 보여줍니다.

  • 두 번째 탭인 “테이블”은 각 테이블의 데이터 길이 및 기타 세부 사항을 보여줍니다.


답변

  • 모든 테이블의 크기 :

    데이터베이스 또는 TABLE_SCHEMA이름이 “news_alert” 라고 가정하십시오 . 그런 다음이 쿼리는 데이터베이스에있는 모든 테이블의 크기를 보여줍니다.

    SELECT
      TABLE_NAME AS `Table`,
      ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024),2) AS `Size (MB)`
    FROM
      information_schema.TABLES
    WHERE
      TABLE_SCHEMA = "news_alert"
    ORDER BY
      (DATA_LENGTH + INDEX_LENGTH)
    DESC;

    산출:

        +---------+-----------+
        | Table   | Size (MB) |
        +---------+-----------+
        | news    |      0.08 |
        | keyword |      0.02 |
        +---------+-----------+
        2 rows in set (0.00 sec)
  • 특정 테이블의 경우 :

    당신 TABLE_NAME“뉴스” 라고 가정하십시오 . 그런 다음 SQL 쿼리는

    SELECT
      TABLE_NAME AS `Table`,
      ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024),2) AS `Size (MB)`
    FROM
      information_schema.TABLES
    WHERE
        TABLE_SCHEMA = "news_alert"
      AND
        TABLE_NAME = "news"
    ORDER BY
      (DATA_LENGTH + INDEX_LENGTH)
    DESC;

    산출:

    +-------+-----------+
    | Table | Size (MB) |
    +-------+-----------+
    | news  |      0.08 |
    +-------+-----------+
    1 row in set (0.00 sec)

답변

다음 쉘 명령을 시도 DB_NAME하십시오 (데이터베이스 이름으로 바꾸 십시오).

mysql -uroot <<<"SELECT table_name AS 'Tables', round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema = \"DB_NAME\" ORDER BY (data_length + index_length) DESC;" | head

Drupal / drush 솔루션의 경우 사용중인 가장 큰 테이블을 표시하는 다음 예제 스크립트를 확인하십시오.

#!/bin/sh
DB_NAME=$(drush status --fields=db-name --field-labels=0 | tr -d '\r\n ')
drush sqlq "SELECT table_name AS 'Tables', round(((data_length + index_length) / 1024 / 1024), 2) 'Size in MB' FROM information_schema.TABLES WHERE table_schema = \"${DB_NAME}\" ORDER BY (data_length + index_length) DESC;" | head -n20