Làm thế nào để có được kích thước của cơ sở dữ liệu mysql?


542

Làm thế nào để có được kích thước của cơ sở dữ liệu mysql?
Giả sử cơ sở dữ liệu đích được gọi là "v3".


Đối với kích thước cơ sở dữ liệu bảng / cụ thể cụ thể kịch bản cung cấp ở đây sẽ giúp đỡ, thông tin được tính toán từ bảng information_schema.tables, xem câu trả lời chi tiết ở đây rathishkumar.in/2017/12/...
Rathish

Câu trả lời:


1185

Chạy truy vấn này và bạn có thể sẽ nhận được những gì bạn đang tìm kiếm:

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; 

Truy vấn này đến từ các diễn đàn mysql , nơi có các hướng dẫn toàn diện hơn có sẵn.


4
Ngay cả sau khi tôi xóa hầu hết dữ liệu khỏi các bảng trong cơ sở dữ liệu, kích thước vẫn giữ nguyên
Vidz

2
@Vidz bạn đang sử dụng công cụ InnoDB. Nếu bạn làm như vậy, bạn có thể giải phóng không gian trừ khi bạn sử dụng file_per_table và thay đổi bảng.
mandza

5
Xin lưu ý rằng phương pháp này sẽ không trả về bất kỳ cơ sở dữ liệu nào hoàn toàn trống, ít nhất phải có một bảng duy nhất để cơ sở dữ liệu xuất hiện trong kết quả.
v010dya

13
Để chọn từ một cơ sở dữ liệu, hãy thêm phần này vào giữa FROMGROUPdòng: where table_schema='DATABASE_NAME'- thay thế DATABASE_NAMEbằng cơ sở dữ liệu của bạn.
Giá KJ

2
Lưu ý: MySQL Workbench sẽ phát ra Syntax error: {column title} (double quoted text) is not valid input here.lỗi. Các tiêu đề cột nên được bọc trong dấu tick. Tức Database Name.
KareemElashmawy

75

Nó có thể được xác định bằng cách sử dụng lệnh MySQL

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

Kết quả

Database    Size (MB)
db1         11.75678253
db2         9.53125000
test        50.78547382

Nhận kết quả tính bằng 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
Đẹp. Tôi thích câu trả lời này.
progfan

31

Ngoài ra, nếu bạn đang sử dụng phpMyAdmin, bạn có thể xem tổng số kích thước bảng trong phần chân trang của structuretab cơ sở dữ liệu của bạn . Kích thước cơ sở dữ liệu thực tế có thể hơi lớn hơn kích thước này, tuy nhiên nó có vẻ phù hợp với table_schemaphương pháp được đề cập ở trên.

Ảnh chụp màn hình:

nhập mô tả hình ảnh ở đây


26

Ngoài ra, bạn có thể trực tiếp nhảy vào thư mục dữ liệu và kiểm tra kích thước kết hợp của v3.myd, v3. myi và v3. tập tin frm (cho myisam) hoặc v3.idb & v3.frm (cho innodb).


7
Lưu ý: tệp ibd chỉ tồn tại nếu sử dụng innodb_file_per_table
Slashterix

2
Câu trả lời này rất cụ thể cho công cụ lưu trữ. Trả lời bởi @ brian-willis là phù hợp hơn.
Manu Manjunath

15

Để có kết quả bằng MB:

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

Để có kết quả tính bằng 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";

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

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

Nếu không được cài đặt, điều này có thể được cài đặt bằng cách cài đặt mysql-utilsgói cần được đóng gói bởi hầu hết các bản phân phối chính.


4

Lần đầu tiên đăng nhập vào MySQL bằng

mysql -u username -p

Lệnh hiển thị kích thước của một Cơ sở dữ liệu duy nhất cùng với bảng của nó tính bằng 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;

Thay đổi cơ sở dữ liệu thành cơ sở dữ liệu của bạn

Lệnh hiển thị tất cả các cơ sở dữ liệu với kích thước tính bằng 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

Đi vào thư mục dữ liệu mysql và chạy du -h --max-depth=1 | grep databasename

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.