কম্পিউটার টিউটোরিয়াল

MySQL-এ টেবিলের গড় সারি লেংথ (AVG_ROW_LENGTH) জানা

MySQL-এ কোনো টেবিলের গড় সারি লেংথ (বাইটে) জানতে INFORMATION_SCHEMA.TABLES-এর AVG_ROW_LENGTH কলাম ব্যবহার করুন। এটি স্টোরেজ প্ল্যানিং ও পারফরম্যান্স টিউনিং-এ সাহায্য করে।

সিনট্যাক্স

SELECT TABLE_NAME, AVG_ROW_LENGTH, DATA_LENGTH, TABLE_ROWS
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database' 
  AND TABLE_NAME = 'your_table';

উদাহরণ

CREATE TABLE client_information (
    id INT,
    name VARCHAR(10)
);

INSERT INTO client_information VALUES (1, 'Larry'), (2, 'Mike'), (3, 'Sam');

ক্যোয়ারি

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

ফলাফল (আংশিক)

+--------------------+----------------+-------------+------------+
| TABLE_NAME         | AVG_ROW_LENGTH | DATA_LENGTH | TABLE_ROWS |
+--------------------+----------------+-------------+------------+
| client_information | 5461           | 16384       | 3          |
+--------------------+----------------+-------------+------------+

কলাম ব্যাখ্যা

কলামঅর্থ
AVG_ROW_LENGTHগড় সারি আকার (বাইটে) — InnoDB-এ পেজ-ভিত্তিক więc এস্টিমেট
DATA_LENGTHটোটাল ডেটা আকার (বাইটে)
INDEX_LENGTHইনডেক্স আকার (বাইটে)
DATA_FREEফ্রেগমেন্টেড স্পেস (বাইটে)
TABLE_ROWSআনুমানিক সারি সংখ্যা (InnoDB-এ একজেক্ট নয়)
MAX_DATA_LENGTHম্যাক্সিমাম ডেটা আকার (ইঞ্জিন-নির্ভর)

InnoDB-এ AVG_ROW_LENGTH-এর বাস্তবতা

InnoDB ডেটা ১৬KB পেজে স্টোর করে। AVG_ROW_LENGTH = DATA_LENGTH / TABLE_ROWS (এন্ট্রি নয়, পেজ-লেভেল ক্যালকুলেশন)। ছোট টেবিলে এটি বাস্তবতার চেয়ে বড় দেখাতে পারে।

সঠিক সাইজ জানার উপায়

-- সঠিক সারি সংখ্যা
SELECT COUNT(*) FROM client_information;

-- তারপর ম্যানুয়ালি ক্যালকুলেট
SELECT DATA_LENGTH / (SELECT COUNT(*) FROM client_information) AS exact_avg_row_length
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'client_information';

সব টেবিলের আকার রিপোর্ট

SELECT 
    TABLE_NAME,
    TABLE_ROWS,
    ROUND(DATA_LENGTH/1024/1024, 2) AS data_mb,
    ROUND(INDEX_LENGTH/1024/1024, 2) AS index_mb,
    ROUND(AVG_ROW_LENGTH, 0) AS avg_row_bytes
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'your_database'
ORDER BY DATA_LENGTH DESC;
  1. MySQL-এ CHAR_LENGTH() দিয়ে কলামের সব মানর অক্ষর গণনা করা

  2. MySQL-এ একক কোয়ারিতে দুটি কলামের মান গণনা করা

  3. MySQL-এ INFORMATION_SCHEMA.TABLES দিয়ে সর্বশেষ তৈরি টেবিলের নাম বের করা

  4. MySQL-এ নির্দিষ্ট শর্ত অনুযায়ী সিঙ্গেল রো বের করা