Penemuduga: Adakah anda pernah mengendalikan Linux?
Saya: Ya
Penemuduga:Apakah perintah yang perlu saya gunakan
percuma untuk menyemak
untuk menyemakPercuma atas
Penemuduga:Bolehkah anda beritahu saya maklumat yang anda boleh lihat menggunakan arahan percuma
Nah, seperti yang ditunjukkan dalam rajah di bawah, anda boleh melihat penggunaan memori dan cache
memori yang tersedia
🎜🎜 Penemuduga: 🎜Maka adakah anda tahu cara mengosongkan cache yang digunakan (buff/cache)🎜
Saya: em... Saya tidak tahu
Penemuduga: sync; echo 3 > /proc/sys/vm/drop_caches
Kemudian kita boleh mengosongkan buff/cache Bolehkah anda memberitahu saya jika saya boleh melaksanakan arahan ini dalam talian
(Hantar Sub-topik, saya sangat gembira) Faedahnya adalah hebat Selepas membersihkan cache, kita akan mempunyai lebih banyak ruang memori yang tersedia Sama seperti roket kecil xx Guardian pada PC, banyak memori akan dikeluarkan satu klik
Penemuduga: em…., balik dan tunggu pemberitahuan
Penemuduga:Tukar topik dan bincangkan pemahaman anda tentang join
Okay (kalau silap jawab lagi dah habis) Rebutlah peluang)
Sertai dalam SQL boleh gabungkan jadual yang ditentukan mengikut syarat tertentu dan kembalikan data kepada klien
Ada cara untuk menyertainya
.penuh sertai
Sumber imej: https://www.cnblogs.com/reaptomorrow-flydream/p/8145610.html
Penemuduga: Jika anda perlu menggunakan penyata gabungan semasa pembangunan projek, bagaimana untuk mengoptimumkan dan meningkatkan prestasi?
Saya: Terdapat dua situasi, satu dengan saiz data yang kecil dan satu dengan saiz data yang besar.
Inderviewer: THEN?
ME: for
1.
, anda boleh meningkatkan indeks Optimumkan kelajuan pelaksanaan pernyataan gabunganAnda boleh menggunakan maklumat berlebihan untuk mengurangkan bilangan cantuman
Cuba kurangkan bilangan sambungan meja sambungan jadual untuk satu pernyataan SQL tidak boleh melebihi 5 kali ganda
Penemu bual: Boleh dirumuskan bahawa pernyataan gabungan itu agak memakan prestasi, bukan?
Ya
Penemuduga:Kenapa? me: Terdapat proses perbandingan apabila melaksanakan penyataan gabungan: ME: join_buffer_size seperti yang ditunjukkan dalam rajah Saiz akan mempengaruhi prestasi pelaksanaan kenyataan penyertaan kami Penemuduga: Premis utama Penemuduga: Saya: Ambil InnoDB enjin MySQL sebagai contoh InnoDB menggunakan halaman sebagai unit IO asas, dan saiz setiap halaman ialah 16KB storan data.InnoDB untuk setiap fail. Verifikasi me: Ini bermakna kita perlu membaca seberapa banyak fail yang ada jadual untuk disambungkan. cakera keras Penemuduga:Maksudnya, pergerakan kepala magnet yang kerap akan menjejaskan prestasi, bukan? Saya:Ya, bukankah rangka kerja sumber terbuka semasa suka mengatakan bahawa mereka sangat meningkatkan prestasi melalui pembacaan dan penulisan berurutan? , seperti hbase, kafka Pewawancara: Betul, adakah anda fikir Linux telah mengoptimumkan ini? cache diduduki Lebih daripada 1.2G buff/ disimpan dalam cache Apa adakah? Mengapa buff/cache mengambil begitu banyak memori, dan memori yang tersedia tersedia dan masih ada 1.1G? Mengapa anda boleh menggunakan dua arahan untuk membersihkan memori yang diduduki oleh buff/cache, tetapi anda hanya boleh melepaskan digunakan dengan menamatkan proses? Pin, adakah anda berfikir dengan teliti Saya: Bolehkah? Saya memikirkan ayat dalam "CSAPP" (Pemahaman Mendalam Sistem Komputer) Intipati hierarki memori ialah setiap lapisan peranti storan adalah cache peranti lapisan bawah Dalam orang awam istilah, Maksudnya, Linux akan menganggap memori sebagai cache cakera keras Maklumat berkaitan: http://tldp.org/LDP/sag/html/buffer-cache.html Pewawancara: Sekarang saya tahu bahawa Bagaimana saya harus menjawab soalan mata Saya:Saya... Penemuduga:Beri anda peluang lagi jika anda bertanya untuk melaksanakan algoritma Sertai ? Saya: Jika tiada indeks, gelung bersarang akan selesai. Jika ada indeks, anda boleh menggunakan indeks untuk meningkatkan prestasi. Penemuduga: Kembali ke join_buffer, pada pendapat anda apa yang disimpan dalam join_buffer Saya: Semasa proses pengimbasan, pangkalan data akan memilih jadual dan meletakkan data yang ingin dipulangkan dan perlu dibandingkan dengan jadual lain . join_buffer Penemuduga: Bagaimana untuk mengendalikannya apabila terdapat indeks? Saya: Ini agak mudah cuma baca pepohon indeks kedua-dua jadual dan bandingkannya Izinkan saya memperkenalkan kaedah pemprosesan tanpa indeks Nested Loop Join sahaja . baca satu baris data dalam jadual pada satu masa Maksudnya, jika outerTable mempunyai 100,000 baris data dan innerTable mempunyai 100 baris data, ia perlu dibaca 10,000,000 kali (dengan mengandaikan bahawa fail kedua-dua jadual ini. belum dikendalikan) Sistem menyimpannya ke dalam memori, kami memanggilnya jadual data sejuk) Sudah tentu, tiada enjin pangkalan data menggunakan algoritma ini sekarang (terlalu perlahan) Sekat gelung bersarang
Blok blok, iaitu Ia mengatakan bahawa sekeping data akan diambil ke dalam memori setiap kali untuk mengurangkan overhed I/O MySQL InnoDB akan menggunakan algoritma ini apabila tiada indeks boleh digunakan Pertimbangkan dua jadual berikut t_a dan t_b Apabila indeks tidak boleh digunakan untuk melakukan operasi gabungan, InnoDB akan menggunakan algoritma gelung bersarang Blok secara automatik Apabila saya berada di sekolah, guru pangkalan data suka mengambil paradigma pangkalan data yang paling banyak. , gunakannya Jika ia tidak boleh berlebihan, sertainya Jika bergabung benar-benar menjejaskan prestasi. Cuba tingkatkan join_buffer_size anda atau tukar kepada pemacu keadaan pepejal. "Pemahaman Mendalam Sistem Komputer" - Bab 6 Hierarki MemoriBuffer
show variables like '%buffer%'
Saya:
Sebarang projek akhirnya akan masuk dalam talian, dan tidak dapat dielakkan untuk menjana data juga, data Skala tidak boleh kecil
Sertai algoritma
Summary
Rujukan
"Eksperimen dan keseronokan dengan cache cakera Linux" Penulis menggunakan beberapa contoh untuk menggambarkan kesan cache cakera keras terhadap prestasi pelaksanaan program
" Linux makan ram saya》Penjelasan Parameter Percuma
Cara mengosongkan penimbal/pagecache (cache cakera) di bawah Linux Penjelasan arahan sub-soalan pada permulaan artikel
Cara MySQL berjalan: Memahami MySQL dari akar
Sekat gelung terbaik daripada MariaDB Dokumen rasmi menerangkan pelaksanaan algoritma Block-Nested-Loop
Atas ialah kandungan terperinci Mengapakah spesifikasi kod memerlukan pernyataan SQL supaya tidak mempunyai terlalu banyak sambungan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!