


Apakah sebab mengapa Docker melancarkan direktori Windows ke direktori data MySQL menyebabkan import data perlahan?
Apr 01, 2025 am 11:24 AMDocker Mounts Windows Directory ke Pangkalan Data MySQL yang mengakibatkan parsing import data perlahan
Artikel ini menganalisis sebab mengapa data pangkalan data MySQL lambat untuk diimport dalam bekas Docker. Masalah ini berpunca daripada pemasangan direktori hos Windows ke direktori data pangkalan data MySQL 8.0 yang berjalan dalam bekas Docker (Linux Environment), menghasilkan kelajuan import yang sangat perlahan.
/tmp
menggunakan Docker ./tmp
memasang ./mysqlData
/var/lib/mysql
Proses import adalah untuk menyalin pertama 21MB fail SQL ke direktori ./tmp
pada hos Windows, dan kemudian mengimportnya menggunakan perintah mysql
dalam bekas. Walau bagaimanapun, proses ini mengambil masa hampir sejam.
Inti masalah terletak pada kemunculan prestasi yang disebabkan oleh perbezaan antara sistem fail Windows dan Linux. Docker melancarkan direktori Windows ke dalam bekas Linux, yang akan menyebabkan kerugian prestasi yang besar. Ini bukan masalah dengan saiz fail SQL, tetapi kelajuan I/O yang sangat rendah dari bekas Linux mengakses sistem fail Windows. Ini kerana pelaksanaan asas kedua -dua sistem fail sangat berbeza, dan dalam persekitaran virtualisasi Docker, perbezaan ini dikuatkan, mengakibatkan penurunan ketara dalam kelajuan akses fail.
Oleh itu, sebab utama import data perlahan adalah bahawa kelajuan I/O kontena membaca dan menulis ke direktori Windows yang dipasang ( ./tmp
) terlalu perlahan. Untuk pengesahan, adalah disyorkan untuk menjalankan ujian perbandingan: Salin pertama fail SQL ke mesin maya Linux atau direktori dalaman bekas, dan kemudian mengimportnya, dan bandingkan perbezaan kelajuan import untuk mengesahkan sama ada masalah yang disebabkan oleh akses perlahan ke sistem fail Windows.
Atas ialah kandungan terperinci Apakah sebab mengapa Docker melancarkan direktori Windows ke direktori data MySQL menyebabkan import data perlahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apabila Windows tidak dapat mengesan monitor kedua, periksa terlebih dahulu sama ada sambungan fizikal adalah normal, termasuk bekalan kuasa, pemalam kabel dan keserasian antara muka, dan cuba menggantikan kabel atau penyesuai; Kedua, mengemas kini atau memasang semula pemacu kad grafik melalui pengurus peranti, dan melancarkan versi pemandu jika perlu; kemudian klik secara manual "pengesanan" dalam tetapan paparan untuk mengenal pasti monitor untuk mengesahkan sama ada ia dikenal pasti dengan betul oleh sistem; Akhirnya periksa sama ada sumber input monitor dihidupkan ke antara muka yang sepadan, dan sahkan sama ada port output kad grafik yang disambungkan ke kabel adalah betul. Berikutan langkah-langkah di atas untuk menyemak, kebanyakan masalah pengiktirafan dua skrin biasanya dapat diselesaikan.

Pengoptimuman prestasi pertanyaan MySQL perlu bermula dari titik teras, termasuk penggunaan indeks rasional, pengoptimuman penyata SQL, reka bentuk struktur meja dan strategi pembahagian, dan penggunaan alat cache dan pemantauan. 1. Gunakan indeks dengan munasabah: Buat indeks pada medan pertanyaan yang biasa digunakan, elakkan pengimbasan jadual penuh, perhatikan urutan indeks gabungan, jangan tambah indeks dalam medan terpilih yang rendah, dan elakkan indeks berlebihan. 2. Mengoptimumkan pertanyaan SQL: Elakkan pilih*, jangan gunakan fungsi di mana, mengurangkan bersarang subquery, dan mengoptimumkan kaedah pertanyaan paging. 3. Reka Bentuk dan Pembahagian Struktur Jadual: Pilih paradigma atau anti-paradigma mengikut senario membaca dan menulis, pilih jenis medan yang sesuai, data bersih secara teratur, dan pertimbangkan jadual mendatar untuk membahagikan jadual atau partition mengikut masa. 4. Menggunakan cache dan pemantauan: Gunakan cache redis untuk mengurangkan tekanan pangkalan data dan membolehkan pertanyaan perlahan

Apabila menghadapi masalah tugas percetakan yang terperangkap, membersihkan giliran cetak dan memulakan semula perkhidmatan printspooler adalah penyelesaian yang berkesan. Pertama, buka antara muka "Peranti dan Pencetak" untuk mencari pencetak yang sepadan, klik kanan tugas dan pilih "Batal" untuk membersihkan tugas tunggal, atau klik "Batal semua dokumen" untuk membersihkan barisan pada satu masa; Jika barisan tidak dapat diakses, tekan Win R untuk memasukkan perkhidmatan.msc untuk membuka senarai perkhidmatan, cari "Printspooler" dan hentikannya sebelum memulakan perkhidmatan. Jika perlu, anda boleh memadam secara manual fail sisa di bawah laluan c: \ windows \ system32 \ spool \ pencetak untuk menyelesaikan masalah sepenuhnya.

Untuk mendedahkan pelabuhan kontena Docker, tuan rumah perlu mengakses perkhidmatan kontena melalui pemetaan port. 1. Gunakan dockerrun-p [host_port]: [container_port] perintah untuk menjalankan bekas, seperti dockerrun-p8080: 3000my-web-app; 2. Gunakan arahan pendedahan untuk menandakan tujuan dalam Dockerfile, seperti Expose3000, tetapi pelabuhan tidak akan diterbitkan secara automatik; 3. Konfigurasi segmen pelabuhan fail YML dalam DockerCompose, seperti pelabuhan:-"8080: 3000"; 4. Gunakan dockerps untuk memeriksa sama ada peta pelabuhan dijana selepas berjalan.

CTE adalah ciri yang diperkenalkan oleh MySQL8.0 untuk meningkatkan kebolehbacaan dan penyelenggaraan pertanyaan kompleks. 1. CTE adalah set hasil sementara, yang hanya sah dalam pertanyaan semasa, mempunyai struktur yang jelas, dan menyokong rujukan pendua; 2. Berbanding dengan subqueries, CTE lebih mudah dibaca, boleh diguna semula dan menyokong rekursi; 3. Rekursif CTE boleh memproses data hierarki, seperti struktur organisasi, yang perlu memasukkan pertanyaan awal dan bahagian rekursi; 4. Penggunaan cadangan termasuk mengelakkan penyalahgunaan, penamaan spesifikasi, memberi perhatian kepada kaedah prestasi dan debugging.

Apabila menghadapi masalah "WindowsCan'tConnectTothisNetwork", anda harus terlebih dahulu menyemak sama ada nama rangkaian dan kata laluan betul, termasuk kes, ruang dan aksara khas. Jika ia adalah nama WiFi Cina, cuba ubahnya ke bahasa Inggeris, dan kemudian lupa rangkaian dan sambungkan semula; Kedua, periksa sama ada penghala menghadkan bilangan peranti atau membolehkan penapisan alamat MAC, dan mulakan semula penghala atau log masuk ke latar belakang untuk menyesuaikan tetapan; Ketiga, periksa tetapan dan pemacu rangkaian sistem, kemas kini pemacu kad rangkaian tanpa wayar, tetapkan semula tetapan rangkaian atau sahkan bahawa IP diperolehi secara automatik; Akhirnya periksa sama ada kaedah pengesahan rangkaian serasi, terutamanya dalam rangkaian perusahaan atau kampus, anda perlu berunding dengan pentadbir untuk mengkonfigurasi protokol EAP dan sijil pemasangan yang betul.

MySQL's Explect adalah alat yang digunakan untuk menganalisis rancangan pelaksanaan pertanyaan. Anda boleh melihat proses pelaksanaan dengan menambah Jelaskan sebelum pertanyaan pilih. 1. Bidang utama termasuk ID, Select_Type, Jadual, Jenis, Kunci, Tambahan, dan lain -lain; 2. Pertanyaan yang cekap perlu memberi perhatian kepada jenis (seperti const, eq_ref adalah yang terbaik), kunci (sama ada menggunakan indeks yang sesuai) dan tambahan (elakkan menggunakanfilesort dan menggunakannya); 3. Cadangan Pengoptimuman Biasa: Elakkan menggunakan fungsi atau mengaburkan kad liar terkemuka untuk bidang, memastikan jenis medan yang konsisten, dengan munasabah menetapkan indeks medan sambungan, mengoptimumkan operasi penyortiran dan pengumpulan untuk meningkatkan prestasi dan mengurangkan modal

Untuk mengakses perkhidmatan dalam bekas Docker dari tuan rumah, gunakan pemetaan port. Langkah-langkah khusus ialah: 1. Use -p untuk menentukan host_port: container_port Apabila memulakan bekas, seperti dockerrun-d-p8080: 80nginx; 2. Pelbagai pelabuhan boleh dikonfigurasi melalui parameter -parameter atau fail dockercompose; 3. Mengikat alamat IP boleh dibatasi, seperti -p192.168.1.100: 8080: 80; 4. Gunakan dockerps atau dockerInspect untuk melihat butiran pemetaan pelabuhan.
