การตรวจสอบความยาวแถวเฉลี่ย (Average Row Length) ใน MySQL
ใช้ตาราง INFORMATION_SCHEMA.TABLES คอลัมน์ AVG_ROW_LENGTH
SELECT AVG_ROW_LENGTH FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'yourTableName';
ตัวอย่างการใช้งาน
สร้างตารางและเพิ่มข้อมูล:
mysql> create table DemoTable (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName varchar(100));
mysql> insert into DemoTable(StudentName) values('John');
mysql> insert into DemoTable(StudentName) values('Larry');
mysql> insert into DemoTable(StudentName) values('Sam');
mysql> insert into DemoTable(StudentName) values('Mike');
คิวรีดู AVG_ROW_LENGTH:
mysql> SELECT AVG_ROW_LENGTH FROM information_schema.tables WHERE TABLE_NAME = 'DemoTable';
+----------------+ | AVG_ROW_LENGTH | +----------------+ | 4096 | +----------------+
ความหมายของ AVG_ROW_LENGTH:
- ประมาณการจำนวน Byte ต่อแถว (ประมาณการของ Storage Engine)
- สำหรับ InnoDB: รวม Overhead ของ Row Header, Transaction ID, Roll Pointer ฯลฯ
- ค่า 4096 ในตัวอย่าง เพราะ InnoDB Default Page Size = 16KB และแถวสั้นมาก จึงรายงานเป็น Page Size
- ค่าจริงอาจต่างไป ขึ้นอยู่กับ Row Format (Compact, Dynamic, Compressed, Redundant)
คอลัมน์ที่เกี่ยวข้องใน INFORMATION_SCHEMA.TABLES:
DATA_LENGTH- ขนาดข้อมูล (Bytes)INDEX_LENGTH- ขนาดดัชนี (Bytes)DATA_FREE- พื้นที่ว่างใน TablespaceTABLE_ROWS- จำนวนแถวประมาณการCREATE_TIME, UPDATE_TIME, CHECK_TIME
คำสั่งสรุปตาราง: SHOW TABLE STATUS LIKE 'DemoTable'; (แสดงข้อมูลทั้งหมดข้างต้น)