অটো-ইনক্রিমেন্ট আইডি ফ্র্যাগমেন্টেশন এবং পুনর্ব্যবহার
InnoDB-এ AUTO_INCREMENT আইডি ডিলিট, সার্ভার রিস্টার্ট, বা ইনসার্টের কারণে ফ্র্যাগমেন্টেড হতে পারে (গ্যাপ তৈরি হতে পারে)। MySQL 5.6+ এ innodb_file_per_table=1 ডিফল্ট অন।
উদাহরণ: ফ্র্যাগমেন্টেশন দেখা
mysql> CREATE TABLE UniqueAutoId (id INT AUTO_INCREMENT, UNIQUE(id)); mysql> INSERT INTO UniqueAutoId VALUES (),(),(),(),(); -- IDs: 1,2,3,4,5 mysql> DELETE FROM UniqueAutoId WHERE id = 5; -- 5 ডিলিট mysql> DELETE FROM UniqueAutoId WHERE id = 2; -- 2 ডিলিট mysql> SELECT * FROM UniqueAutoId; +----+ | id | +----+ | 1 | | 3 | | 4 | +----+
ফলাফল: আইডি ২ এবং ৫ গায়েব, ফ্র্যাগমেন্টেশন হয়েছে।
সমাধান
- পুনর্ব্যবহার:
INSERT INTO UniqueAutoId (id) VALUES (2);দিয়ে গ্যাপ পূরণ করা যায়। - রিসেট:
ALTER TABLE UniqueAutoId AUTO_INCREMENT = 1;(খালি টেবিলে)। - innodb_file_per_table: প্রতিটি টেবিল আলাদা .ibd ফাইলে থাকে, স্পেস রিক্লেইম সহজ।

[mysqld] innodb_file_per_table = 1