Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Liệt kê bảng MySQL và dung lượng, sắp xếp theo kích thước

Sử dụng information_schema.TABLES để lấy thông tin dung lượng bảng (data + index) và sắp xếp.

Truy vấn:

SELECT 
  TABLE_NAME, 
  TABLE_ROWS, 
  DATA_LENGTH, 
  INDEX_LENGTH, 
  ROUND(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024), 2) AS "MB Size"
FROM information_schema.TABLES 
WHERE TABLE_SCHEMA = 'ten_database' 
ORDER BY (DATA_LENGTH + INDEX_LENGTH) ASC;

Giải thích:

  • DATA_LENGTH: dung lượng dữ liệu (byte)
  • INDEX_LENGTH: dung lượng chỉ mục (byte)
  • Tổng / 1024 / 1024 = MB, làm tròn 2 chữ số thập phân
  • Sắp xếp tăng dần (ASC) từ nhỏ đến lớn

Ví dụ với database test (rút gọn output):

mysql> SELECT ... FROM information_schema.TABLES WHERE TABLE_SCHEMA = "test" ORDER BY ... ASC;
+------------------------------------+------------+-------------+--------------+---------+
| TABLE_NAME                         | TABLE_ROWS | DATA_LENGTH | INDEX_LENGTH | MB Size |
+------------------------------------+------------+-------------+--------------+---------+
| empinfoview                        | 0          | 0           | 0            | 0.00    |
| lookuptable                        | 0          | 0           | 0            | 0.00    |
| ...                                | ...        | ...         | ...          | ...     |
| student                            | 2          | 16384       | 32768        | 0.05    |
+------------------------------------+------------+-------------+--------------+---------+

Các view có dung lượng 0. Bảng lớn nhất hiển thị cuối. Dùng DESC để sắp xếp giảm dần (lớn nhất trước).