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 TABLErồ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