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

MySQL-এ অটো-ইনক্রিমেন্ট আইডি কলামের ফ্র্যাগমেন্টেশন হ্যান্ডলিং

অটো-ইনক্রিমেন্ট আইডি ফ্র্যাগমেন্টেশন এবং পুনর্ব্যবহার

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 ফাইলে থাকে, স্পেস রিক্লেইম সহজ।

MySQL-এ অটো-ইনক্রিমেন্ট আইডি কলামের ফ্র্যাগমেন্টেশন হ্যান্ডলিং

[mysqld]
innodb_file_per_table = 1
  1. MySQL-এ SUBSTRING_INDEX() ব্যবহার করে কলাম বিভক্ত করা (স্প্লিট)

  2. MySQL에서 데이터 삭제 후 AUTO_INCREMENT를 1부터 다시 시작하려면 TRUNCATE

  3. MySQL-এ ইনিশিয়াল ভ্যালু ও অটো-ইনক্রিমেন্ট সেট করা

  4. MySQL সিকোয়েন্স তৈরি (How to Create a MySQL Sequence)