이 쿼리를 실행하여 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