Bagaimana Penalaan MySQL Meningkatkan Prestasi Laravel

WBOY
Lepaskan: 2024-07-29 20:33:03
asal
430 orang telah melayarinya

Penalaan Konfigurasi MySQL ialah komponen penting dalam pengurusan pangkalan data yang dilaksanakan oleh profesional dan pentadbir pangkalan data. Ia bertujuan untuk mengkonfigurasi pangkalan data agar sesuai dengan perkakasan dan beban kerjanya. Tetapi di luar bidang pengurusan pangkalan data, kegunaan penalaan Konfigurasi MySQL sebahagian besarnya diabaikan.

Kami membuat hipotesis bahawa penalaan MySQL boleh menjejaskan prestasi apl web dengan ketara. Jika kami dapat mempamerkan nilai penalaan MySQL, kami percaya bahawa perusahaan dan organisasi mungkin berminat untuk menerapkan amalan ini pada skala yang lebih besar.

Cara Meningkatkan Prestasi Aplikasi Laravel

Meningkatkan prestasi aplikasi dengan penalaan paling baik dicapai dengan pendekatan komprehensif yang menangani bidang berikut:

  • Sumber Pelayan – CPU, Memori, Storan
  • Tatarajah Perisian – Linux, Nginx, Php…
  • Konfigurasi Sistem Pengurusan Pangkalan Data (DBMS) – MySQL, PostgreSQL
  • Optimumkan skema pangkalan data dan tukar indeks
  • Optimumkan aplikasi – Kod, Pertanyaan, Seni Bina…

Ramai pembangun berpengalaman tidak melihat penalaan prestasi pangkalan data sebagai peluang untuk meningkatkan prestasi apl mereka kerana mereka tahu sedikit tentang domain ini. Mereka menghabiskan banyak masa untuk mengoptimumkan pangkalan kod, tetapi ia mencapai tahap di mana ia tidak lagi membawa hasil yang berharga untuk masa dan tenaga yang dilaburkan. Penyelidikan kami tentang cara penalaan MySQL memberi kesan positif kepada prestasi aplikasi web sumber terbuka yang popular bertujuan untuk mempamerkan fakta ini kepada pembangun.

Pendekatan Pengujian

Prosedur ujian kami untuk Laravel Aimeos membolehkan kami membandingkan prestasi apl sebelum dan selepas konfigurasi menggunakan data berbiji. Dengan menjalankan ujian dengan konfigurasi lalai terlebih dahulu, kami memperoleh hasil kawalan yang berharga untuk membandingkan konfigurasi yang ditala.

Kami menggunakan proses berikut untuk menyediakan dan menguji setiap permohonan:

  1. Gunakan Laravel Aimeos.
  2. Pangkalan data benih dengan data.
  3. Sediakan ujian untuk JMeter.
  4. Jalankan ujian selama 10 minit – Jalankan ujian JMeter menggunakan platform ujian prestasi Blazemeter.
  5. Tala konfigurasi MariaDB – Selepas ujian konfigurasi lalai, persediaan kami kekal sama, tetapi MariaDB telah ditala untuk beban kerja, sumber pelayan dan saiz pangkalan data.
  6. Ujian jalankan semula – Ulangi ujian JMeter menggunakan Blazemeter untuk konfigurasi yang ditala.

Kami menerbitkan ujian JMeter, Status MySQL dan Pembolehubah MySQL semasa ujian di Github.

Apakah metrik yang kami lihat?

Metrik yang kami lihat semasa penyelidikan ini ialah:

  1. Masa Tindak Balas ( Latensi ) ialah masa antara menghantar permintaan dan memprosesnya pada bahagian pelayan hingga masa klien menerima bait pertama. Ia adalah metrik penting yang memberi anda cerapan tentang prestasi pelayan.
  2. Pertanyaan sesaat ialah metrik yang mengukur bilangan pertanyaan yang dilaksanakan pelayan pangkalan data sesaat.
  3. Penggunaan CPU.

Kami mengumpulkan metrik Penggunaan CPU dan Pertanyaan sesaat untuk membandingkan beban kerja.

Laravel Aimeos

Aimeos Laravel ialah rangka kerja apl web e-dagang yang popular untuk mencipta kedai dalam talian, pasaran dan apl B2B. Dengan Aimeos, pengguna boleh mencipta kedai eCommerce yang mengutamakan API untuk Laravel yang boleh berskala untuk menyokong lebih 1 bilion item. Ia tersedia dalam lebih 30 bahasa dan mempunyai lebih 300,000 pemasangan.

Persediaan Ujian

Untuk menguji Aimeos, kami memulakan ujian dengan sepuluh pengguna, tetapi kami terpaksa mengurangkan bilangan pengguna kerana kami tidak dapat menyelesaikan ujian dengan konfigurasi lalai.

Kami menyemai pangkalan data dengan data 500 Mb.
Tempoh ujian kami ialah 10 minit.

Kami menggunakan:

  • Instance AWS EC2 c5.xlarge dengan Debian 11 yang dipasang sebagai sistem pengendalian,
  • Apache sebagai pelayan web,
  • MariaDB 10.5 ditetapkan kepada konfigurasi lalai dengan saiz pangkalan data 500 MB.

Konfigurasi MySQL

Konfigurasi yang digunakan untuk Aimeos Laravel adalah seperti berikut:

Konfigurasi Ditala untuk Laravel Aimeos 500Mb

query_cache_type=1
query_cache_size=134217728
query_cache_limit=16777216
query_cache_min_res_unit=4096
thread_cache_size=0
key_buffer_size=8388608
max_allowed_packet=1073741824
sort_buffer_size=2097152
read_rnd_buffer_size=262144
bulk_insert_buffer_size=8388608
myisam_sort_buffer_size=8388608
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_size=805306368
max_heap_table_size=16777216
tmp_table_size=16777216
join_buffer_size=8388608
max_connections=151
table_open_cache=2048
table_definition_cache=1408
innodb_flush_log_at_trx_commit=1
innodb_log_file_size=201326592
innodb_log_buffer_size=16777216
innodb_write_io_threads=4
innodb_read_io_threads=4
innodb_file_per_table=1
innodb_flush_method=O_DIRECT
innodb_thread_concurrency=0
innodb_purge_threads=4
optimizer_search_depth=0
thread_handling=pool-of-threads
thread_pool_size=2
Salin selepas log masuk

Keputusan Pengujian

Hasil ujian Aimeos Laravel mempamerkan peningkatan prestasi dramatik antara konfigurasi lalai dan ditala.

Pengoptimuman MySQL menghasilkan peningkatan ketara dalam pelayan purata Masa Tindak Balas, yang dikurangkan daripada 1.4 saat kepada di bawah 800 milisaat.

Masa Tindak Balas ( Latensi ) jatuh sebanyak 42% dan purata penggunaan CPU sebanyak 86%, manakala Pertanyaan sesaat meningkat sebanyak 291% yang luar biasa, daripada 12 hingga 35 pertanyaan sesaat.

Graf keputusan tersedia di bawah:

How MySQL Tuning Improves the Laravel Performance Masa Respons (ms), Konfigurasi MySQL Ditala Aimeos lwn Lalai
How MySQL Tuning Improves the Laravel Performance Penggunaan CPU (%), Konfigurasi MySQL Ditala Aimeos lwn Lalai
How MySQL Tuning Improves the Laravel Performance Pertanyaan Sesaat, Aimeos Ditala Konfigurasi MySQL lwn Lalai

Penyumbang Komuniti

Kami bekerjasama dengan pembangun Laravel Gevorg Mkrtchyan dan Sergey Sinitsa daripada syarikat Initlab untuk menyiasat barisan soalan ini dan sangat berterima kasih atas kepakaran mereka.
Sergey menggunakan Aimeos dan Gevorg menyediakan kod untuk pembenihan pangkalan data.

Kesimpulan

Prosedur ujian kami, menggunakan Aimeos Laravel, menunjukkan peningkatan dramatik dalam Masa Tindak Balas (Latensi), Penggunaan CPU dan Pertanyaan sesaat selepas mengkonfigurasi pangkalan data konfigurasi pelayan.

Masa Respons (Latensi) menurun antara 42%, manakala Penggunaan CPU jatuh 86%. Pertanyaan sesaat meningkat dalam Aimeos Laravel 500MB sebanyak 291%.

Kesimpulannya, penalaan MySQL adalah aspek penting dalam pengurusan pangkalan data yang boleh memberi impak ketara ke atas prestasi aplikasi Laravel. Aplikasi web yang berprestasi buruk boleh membawa kepada peningkatan masa muat halaman, pengendalian permintaan yang perlahan dan pengalaman pengguna yang lemah, yang boleh menjejaskan SEO dan jualan secara negatif. Dengan mengoptimumkan prestasi apl web dengan penalaan MySQL, perusahaan dan organisasi boleh meningkatkan jualan, paparan halaman, kadar penukaran dan kedudukan SEO.

Dengan penyelidikan ini, kami berharap dapat mempamerkan nilai penalaan MySQL sebagai cara untuk meningkatkan prestasi aplikasi Laravel dan menggalakkan pembangun Laravel untuk mempertimbangkan amalan ini apabila mengoptimumkan prestasi apl mereka.

Menggunakan alatan seperti Releem, pangkalan data boleh dikonfigurasikan secara automatik untuk prestasi optimum, mengurangkan beban pasukan pembangunan perisian.

Atas ialah kandungan terperinci Bagaimana Penalaan MySQL Meningkatkan Prestasi Laravel. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!