Cipta indeks MySQL untuk mengoptimumkan prestasi aplikasi PHP
Artikel ini membawakan anda pengetahuan yang berkaitan tentang mysql, yang terutamanya memperkenalkan kandungan yang berkaitan tentang pengindeksan untuk mengoptimumkan prestasi aplikasi PHP. Mari kita lihat bersama-sama.
Sebab
Dua bulan yang lalu, seorang rakan ingin membuat projek Untuk tujuan promosi dalam talian yang pantas, dia secara langsung membeli sebuah syarikat Kod sumber dan biarkan penjual menggunakannya dalam talian. Selepas melihat kod sumber, saya terus berkata kepada rakan saya: Saya telah ditipu Kualiti kod sumber ini agak teruk, dan mungkin terdapat masalah prestasi yang serius apabila bilangan pengguna meningkat.
Saya mempunyai asas untuk membuat penilaian sedemikian:
Sebagai aplikasi hampir masa nyata, kod teras ditulis dalam PHP, dan keselarasan banyak senario dikawal melalui rekod jadual pangkalan data dan permintaan berulang; (crontab) untuk mencapai program berjalan tanpa henti, jadi sangat hebat Puluhan tugas berjadual curl dilaksanakan setiap minit; Fail .php dalam kod. Sukar untuk mengetahui kewujudan mereka sepintas lalu. mengelirukan.
Sudah tentu, kod yang boleh menjana wang ialah kod yang bagus (pihak lain menjana wang melalui kod ini), jadi saya tidak terlalu risau mengenainya. Pemikiran awal ialah dengan konfigurasi 4-teras 8G, sukar untuk melayani 10,000 pelanggan, tetapi 5,000 sudah memadai.
Berbalik Baru minggu ini, saya tiba-tiba menerima mesej teks penggera dan e-mel yang kerap daripada Alibaba Cloud, mengatakan bahawa penggunaan CPU terlalu tinggi. Adakah anda fikir promosi pemasaran berjalan lancar dan bilangan pengguna telah meningkat dengan ketara? Apabila saya bertanya kepada rakan-rakan saya, terdapat kurang daripada 300 pengguna!
- Pada masa itulah saya menyedari bahawa prestasi sebenar kod ini adalah lebih teruk daripada yang saya fikirkan, dan terdapat isu prestasi yang serius. Mengikut kadar penggunaan sumber ini, menaik taraf perkakasan adalah jurang yang tidak terhingga, dan pengoptimuman prestasi adalah cara yang betul.
mysql telah menduduki lebih daripada 200% sumber CPU. Setelah membaca kod sumber, saya tahu bahawa terdapat sebab untuk penggunaan MySQL yang tinggi dan ia mungkin, tetapi saya masih mahu melihat mengapa ia menggunakan begitu banyak sumber.
Log masuk ke pelayan MySQL dan semak sama ada log perlahan didayakan: tunjukkan pembolehubah seperti '%slow%' dan ketahui log pertanyaan perlahan didayakan:
Teruskan Semak log dan mendapati bahawa pernyataan SQL tertentu sentiasa muncul dalam log:Anda dapat melihat bahawa lebih daripada 380,000 baris rekod telah diimbas apabila pernyataan SQL ini dilaksanakan. Satu daripada dua jadual yang terlibat dalam penyata mempunyai lebih daripada 600 rekod, dan satu lagi mempunyai lebih daripada 40,000 rekod Ini bersamaan dengan mengimbas keseluruhan jadual dengan lebih daripada 40,000 rekod.
Kemudian semak indeks kedua-dua jadual Kecuali untuk id yang ditambah secara automatik sebagai kunci utama, tiada indeks lain dibuat. Gunakan explain untuk melaksanakan pernyataan, yang menunjukkan bahawa tiada indeks digunakan:
Seterusnya, buat indeks pada lajur uid dan session_id bagi syarat pertanyaan pada dua jadual. Selepas penciptaan indeks selesai, penggunaan CPU yang kelihatan dan beban sistem dikurangkan. Gunakan explain sekali lagi untuk melaksanakan pernyataan pertanyaan Maklumat indeks telah digunakan dan bilangan baris yang diimbas telah dikurangkan dengan banyak:
Selepas pengoptimuman di atas, keseluruhan penggunaan CPU. daripada aplikasi semasa ialah 5%. Sekitar 15%, penggunaan CPU MySQL menurun daripada 4 kepada 0.3. Akhir sekali, tidak perlu risau tentang isu prestasi buat masa ini Walaupun konfigurasi pelayan dikurangkan kepada 1 teras CPU, ia masih boleh mengekalkannya.
Semak kod dan gabungkan dengan log untuk membuat indeks dan mengubah suai beberapa pernyataan pertanyaan Penggunaan CPU menurun kepada kira-kira 6%. >
Ringkasan
Dalam projek pembangunan, jurutera bukan sahaja mesti menulis kod "boleh digunakan", tetapi juga kod "mudah digunakan". Dalam contoh ini, dengan mencipta dua indeks, prestasi sistem boleh dipertingkatkan dengan ketara, iaitu menukar kod daripada "boleh guna" kepada "mudah digunakan".
Pengoptimuman prestasi yang disebut dalam artikel ini memfokuskan pada operasi dan penyelenggaraan, dan pengoptimuman prestasi dalam kod masih belum disentuh. Tetapi prinsip umum adalah betul: gunakan lebih banyak cache dan kurangkan bacaan segerak daripada peranti IO perlahan sebanyak mungkin.
Pembelajaran yang disyorkan: "tutorial video mysql", "Tutorial video PHP"
Atas ialah kandungan terperinci Cipta indeks MySQL untuk mengoptimumkan prestasi aplikasi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

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

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

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

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



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
