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

Lấy độ dài hàng trung bình (average row length) của bảng MySQL

Xem chiều dài hàng trung bình (AVG_ROW_LENGTH) trong MySQL

Sử dụng INFORMATION_SCHEMA.TABLES cột AVG_ROW_LENGTH để biết trung bình byte/hàng, hữu ích cho ước lượng dung lượng.

Cú pháp

SELECT TABLE_NAME, AVG_ROW_LENGTH, DATA_LENGTH, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'yourTableName';

Ví dụ

Tạo bảng và chèn dữ liệu:

mysql> CREATE TABLE Client_information (Id INT, Name VARCHAR(10));
mysql> INSERT INTO Client_information VALUES (1, 'Larry'), (2, 'Mike'), (3, 'Sam');

Truy vấn thông tin:

mysql> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'Client_information';

Kết quả (rút gọn cột quan trọng):

+--------------------+----------------+------------+------------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+
| TABLE_NAME         | ENGINE         | TABLE_ROWS | AVG_ROW_LENGTH | DATA_LENGTH | INDEX_LENGTH | DATA_FREE | AUTO_INCREMENT | CREATE_TIME         | UPDATE_TIME         |
+--------------------+----------------+------------+----------------+-------------+--------------+-----------+----------------+---------------------+---------------------+
| client_information | InnoDB         | 3          | 5461           | 16384       | 0            | 0         | NULL           | 2019-04-03 02:28:31 | 2019-04-03 02:29:00 |
+--------------------+----------------+------------+----------------+-------------+--------------+-----------+----------------+---------------------+---------------------+

Giải thích các cột quan trọng

  • AVG_ROW_LENGTH: Trung bình byte/hàng (5461 byte/hàng trong ví dụ - do InnoDB page overhead)
  • DATA_LENGTH: Tổng dung lượng data (16384 bytes = 16KB = 1 page InnoDB)
  • TABLE_ROWS: Ước lượng số hàng (InnoDB là ước lượng)
  • INDEX_LENGTH: Dung lượng index
  • DATA_FREE: Không gian tự do trong tablespace

Lưu ý về InnoDB

  • InnoDB lưu dữ liệu theo page (16KB mặc định) → AVG_ROW_LENGTH thường lớn hơn kích thước hàng thực
  • Bảng nhỏ (< 1 page): AVG_ROW_LENGTH = PAGE_SIZE / TABLE_ROWS (không chính xác)
  • Để có số chính xác: ANALYZE TABLE rồi xem lại
  • MyISAM: AVG_ROW_LENGTH chính xác hơn (data stored compact)

Ứng dụng

  • Ước lượng dung lượng: AVG_ROW_LENGTH * estimated_rows
  • Phân tích fragmentation: DATA_FREE lớn → cần OPTIMIZE TABLE
  • Capacity planning