Bagaimana Penalaan MySQL Meningkatkan Prestasi Laravel

WBOY
Lepaskan: 2024-07-29 20:33:03
asal
382 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
  • Konfigurasi 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 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 – Larikan 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 ( Latency )ialah masa antara menghantar permintaan dan memprosesnya di bahagian pelayan hingga masa klien menerima bait pertama. Ia adalah metrik penting yang memberi anda cerapan tentang prestasi pelayan.
  2. Pertanyaan sesaatialah metrik yang mengukur bilangan pertanyaan yang dilaksanakan pelayan pangkalan data sesaat.
  3. Penggunaan CPU.

Kami mengumpulkan metrikPenggunaan CPUdanPertanyaan sesaatuntuk 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:

  • AWS EC2 instance 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 purataMasa Tindak Balas, yangdikurangkandaripada 1.4 saat kepada di bawah 800 milisaat.

Masa Tindak Balas ( Latensi )jatuh sebanyak 42% dan puratapenggunaan CPUsebanyak 86%, manakalaPertanyaan sesaatmeningkat sebanyak 291% yang luar biasa, daripada 12 kepada 35 pertanyaan sesaat.

Graf keputusan tersedia di bawah:

How MySQL Tuning Improves the Laravel PerformanceTemps de réponse (ms), configuration MySQL optimisée par Aimeos par rapport aux valeurs par défaut
How MySQL Tuning Improves the Laravel PerformanceUtilisation du processeur (%), configuration MySQL optimisée par Aimeos par rapport aux valeurs par défaut
How MySQL Tuning Improves the Laravel PerformanceRequêtes par seconde, configuration MySQL optimisée par Aimeos par rapport aux valeurs par défaut

Contributeurs de la communauté

Nous avons fait équipe avec les développeurs Laravel Gevorg Mkrtchyan et Sergey Sinitsa de la société Initlab pour enquêter sur cette question et sommes très reconnaissants pour leur expertise.
Sergey a déployé Aimeos et Gevorg a préparé le code pour amorcer la base de données.

Conclusion

Notre procédure de test, utilisant Aimeos Laravel, a montré des améliorations spectaculaires duTemps de réponse (latence), de l'Utilisation du processeuret desRequêtes par secondeaprès avoir configuré la configuration du serveur de base de données.

Le

Temps de réponse (latence)a chuté de 42 %, tandis que l'Utilisation du processeura chuté de 86 %. LesRequêtes par secondeont augmenté de 291 % dans Aimeos Laravel 500 Mo.

En conclusion, le réglage MySQL est un aspect essentiel de la gestion des bases de données qui peut avoir un impact significatif sur les performances des applications Laravel. Des applications Web peu performantes peuvent entraîner une augmentation des temps de chargement des pages, un traitement lent des requêtes et une mauvaise expérience utilisateur, ce qui peut affecter négativement le référencement et les ventes. En optimisant les performances des applications Web grâce au réglage MySQL, les entreprises et les organisations peuvent augmenter leurs ventes, les pages vues, les taux de conversion et les classements SEO.

Avec cette recherche, nous espérons mettre en valeur la valeur du réglage MySQL comme moyen d'améliorer les performances des applications Laravel et encourager les développeurs Laravel à considérer cette pratique lors de l'optimisation des performances de leurs applications.

Grâce à des outils comme Releem, les bases de données peuvent être automatiquement configurées pour des performances optimales, réduisant ainsi la charge des équipes de développement logiciel.

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
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!