Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

MySQL INSERT प्रदर्शन को तेज़ कैसे करें - बल्क इंसर्ट और ट्रांजैक्शन

समाधान: ट्रांजैक्शन के साथ बल्क इंसर्ट

एकाधिक रिकॉर्ड डालते समय, प्रत्येक INSERT के लिए अलग ट्रांजैक्शन के बजाय एक ही ट्रांजैक्शन में बल्क INSERT का उपयोग करके प्रदर्शन में नाटकीय सुधार होता है।

सिंटैक्स

START TRANSACTION;
INSERT INTO yourTableName (col1, col2, ...N) 
VALUES 
    (val1, val2, ...N),
    (val1, val2, ...N),
    ...N;
COMMIT;

व्यावहारिक उदाहरण

टेबल बनाना

mysql> CREATE TABLE insertDemo (
    -> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> StudentName VARCHAR(20),
    -> StudentAge INT
    -> );

ट्रांजैक्शन के साथ बल्क इंसर्ट

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)

परिणाम

StudentIdStudentNameStudentAge
1John21
2Carol22
3Bob21
4David24
5Maxwell25
6Mike22

प्रदर्शन तुलना

विधि1000 पंक्तियों के लिए अनुमानित समयकारण
अलग-अलग INSERT (ऑटोकमिट)~2-5 सेकंडप्रति पंक्ति ट्रांजैक्शन ओवरहेड
बल्क INSERT (एक VALUES सूची)~0.1-0.5 सेकंडएकल पार्स/ऑप्टिमाइज़, एकल ट्रांजैक्शन
LOAD DATA INFILE~0.01-0.1 सेकंडसबसे तेज़, न्यूनतम SQL पार्सिंग

अनुकूलन युक्तियाँ

  • बैच आकार: 1000-5000 पंक्तियों प्रति बैच (बहुत बड़े से बचें)
  • इंडेक्स: बल्क लोड के दौरान गैर-अद्वितीय इंडेक्स अक्षम करें, बाद में पुनर्निर्माण करें
  • LOAD DATA INFILE: CSV/TSV फ़ाइलों के लिए सबसे तेज़
  • innodb_flush_log_at_trx_commit=2 अस्थायी रूप से सेट करें (सावधानी से)
  1. - MySQL व्यू कैसे बनाएं?

    MySQL व्यू बनाने के लिए, नीचे दिए गए सिंटैक्स में CREATE VIEW का उपयोग करें: create view yourViewName as select * from yourTableName; आइए पहले एक टेबल बनाते हैं: mysql> create table DemoTable1802 ( StudentId int, StudentName varchar(20) ); Query OK, 0 rows affected (0.00 sec) इन्सर्ट कमा

  1. Java से MySQL डेटाबेस कैसे कनेक्ट करें (JDBC) Java से MySQL डेटाबेस कैसे कनेक्ट करें (JDBC)

    Java एप्लिकेशन को MySQL से जोड़ने के लिए JDBC (Java Database Connectivity) API और MySQL Connector/J ड्राइवर का उपयोग करें। आवश्यक निर्भरता (Maven) <dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <version>8.3.0</

  1. - MySQL में परिणाम समूहित करें और सूची में दिखाएं

    समाधान GROUP BY के साथ ORDER BY का उपयोग करके गणना और क्रमबद्ध करें। सिंटैक्स SELECT yourColumnName, COUNT(*) AS aliasName FROM yourTableName GROUP BY yourColumnName ORDER BY yourColumnName; उदाहरण टेबल बनाएं: INSERT INTO demo7 (first_name) VALUES (John), (David), (John), (Bob), (David), (David),