বাল্ক ইনসার্টের জন্য ট্রানজ্যাকশন ব্যবহার
অনেক রো একসাথে ইনসার্ট করলে প্রতিটি ইনসার্টের জন্য আলাদা কমিট হতে পারে, যা ধীর করে দেয়। START TRANSACTION ... COMMIT দিয়ে সব ইনসার্ট একসাথে কমিট করুন।
সিনট্যাক্স
START TRANSACTION; INSERT INTO table (col1, col2) VALUES (v1, v2), (v3, v4), ...; COMMIT;
উদাহরণ
টেবিল তৈরি
mysql> create table insertDemo (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20),
-> StudentAge int
-> );
Query OK, 0 rows affected (0.72 sec)
ট্রানজ্যাকশনে বাল্ক ইনসার্ট
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO insertDemo(StudentName, StudentAge) VALUES
-> ('John', 21), ('Carol', 22), ('Bob', 21), ('David', 24),
-> ('Maxwell', 25), ('Mike', 22);
Query OK, 6 rows affected (0.00 sec)
Records: 6 Duplicates: 0 Warnings: 0
mysql> COMMIT;
Query OK, 0 rows affected (0.14 sec)
ডেটা যাচাই
mysql> SELECT * FROM insertDemo;
আউটপুট
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | John | 21 | | 2 | Carol | 22 | | 3 | Bob | 21 | | 4 | David | 24 | | 5 | Maxwell | 25 | | 6 | Mike | 22 | +-----------+-------------+------------+
অতিরিক্ত টিপস দ্রুত ইনসার্টের জন্য:
LOAD DATA INFILE— CSV থেকে সরাসরি লোড (সবচেয়ে দ্রুত)- ইন্ডেক্স আপডেট বন্ধ রাখুন:
ALTER TABLE ... DISABLE KEYS(MyISAM) / ইনসার্টের পরENABLE KEYS innodb_flush_log_at_trx_commit = 2সেট করুন (ডেটা লস রিস্ক থাকে)- ব্যাচ সাইজ অপ্টিমাইজ করুন (১০০০-৫০০০ রো প্রতি ব্যাচ)