Bagaimana untuk Mengoptimumkan Import Data MySQL menggunakan Muatkan Data Infile untuk Jadual dengan Kekunci?

Susan Sarandon
Lepaskan: 2024-11-08 08:49:02
asal
402 orang telah melayarinya

How to Optimize MySQL Data Import using Load Data Infile for Tables with Keys?

Mengoptimumkan Import Data MySQL menggunakan Muatkan Data Infile

Mengimport set data yang besar ke dalam jadual MySQL boleh menjadi tugas yang memakan masa. Apabila menggunakan perintah "Muat data dalam fail...", mengimbangi kelajuan dan integriti data boleh menjadi mencabar. Soalan ini meneroka cara untuk meningkatkan prestasi import sedemikian, terutamanya untuk jadual dengan kunci.

Meningkatkan Kelajuan Import

Kebimbangan utama yang dinyatakan dalam soalan ialah kunci perlahan penciptaan selepas mengimport data tanpa kunci. Untuk menangani perkara ini:

  • Isih Fail CSV: Susun data dalam fail CSV dalam susunan kunci utama jadual. Ini membantu Innodb menggunakan struktur kunci utama berkelompoknya untuk pemuatan yang lebih pantas.
  • Lumpuhkan Kekangan: Lumpuhkan semakan kunci unik dan asing buat sementara waktu untuk mengurangkan overhed semasa pemuatan. Gunakan set arahan unique_checks = 0; dan tetapkan foreign_key_checks = 0;.
  • Lumpuhkan Pengelogan Biner: Matikan pengelogan binari (tetapkan sql_log_bin=0;) untuk memintas pengelogan untuk prestasi yang lebih baik.
  • Split Fail Besar: Bahagikan fail CSV yang besar kepada ketulan yang lebih kecil dan muatkannya secara individu. Ini boleh mengurangkan penggunaan memori dan mempercepatkan proses.

Mempercepatkan Penciptaan Kunci

Selepas memuatkan data, membina semula kunci boleh menjadi operasi yang panjang. Berikut ialah beberapa cadangan:

  • Sisip Pukal: Gunakan klausa INSERT PUKAL dalam penyataan LOAD DATA INFILE untuk mengimport data dengan kunci sekali gus.
  • Indeks Cincang Suaian: Dayakan indeks Cincang Suaian (innodb_adaptive_hash_index=ON) untuk mempercepatkan penciptaan indeks untuk pertanyaan yang kerap digunakan.
  • Pengindeksan Selari: Jika boleh, gunakan pengindeksan selari (innodb_parallel_alter=ON) untuk mencipta berbilang urutan untuk penciptaan indeks, berpotensi mengurangkan masa diambil.

Menamatkan Pertanyaan Lambat

Untuk menamatkan pertanyaan perlahan yang terus berjalan selepas ditamatkan, pertimbangkan:

  • Cuba Semula Menyambung: Putuskan sambungan dan sambung semula ke pelayan MySQL untuk menamatkan sambungan dengan anggun pertanyaan.
  • Gunakan ID Pertanyaan: Kenal pasti ID pertanyaan menggunakan SHOW PROCESSLIST dan bunuhnya menggunakan KILL [QUERY_ID].
  • Mulakan semula MySQL: As langkah terakhir, memulakan semula MySQL akan menamatkan semua pertanyaan yang sedang dijalankan. Walau bagaimanapun, ia boleh menyebabkan gangguan perkhidmatan.

Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Import Data MySQL menggunakan Muatkan Data Infile untuk Jadual dengan Kekunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan