当前位置:首页 > 文章列表 > 数据库 > MySQL > MySQL 调优如何提高 Laravel 性能

MySQL 调优如何提高 Laravel 性能

来源:dev.to 2024-07-29 20:24:52 0浏览 收藏

golang学习网今天将给大家带来《MySQL 调优如何提高 Laravel 性能》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习数据库或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!

mysql配置调优是数据库专业人员和管理员实施的数据库管理的重要组成部分。它的目的是配置数据库以适应其硬件和工作负载。但在数据库管理领域之外,mysql 配置调优的用处很大程度上被忽视了。

我们假设 mysql 调优可以显着影响 web 应用程序的性能。如果我们能够展示mysql调优的价值,我们相信企业和组织可能会热衷于更大规模地结合这种实践。

如何提高 laravel 应用程序性能

通过调优提高应用程序性能最好通过解决以下领域的综合方法来实现:

  • 服务器资源 – cpu、内存、存储
  • 软件配置 – linux、nginx、php…
  • 数据库管理系统(dbms)配置 – mysql、postgresql
  • 优化数据库方案并更改索引
  • 优化应用程序 - 代码、查询、架构......

许多经验丰富的开发人员并不将数据库性能调优视为提高应用程序性能的机会,因为他们对此领域知之甚少。他们花费了大量时间来优化代码库,但已经达到了这样的地步:不再为投入的时间和精力带来有价值的结果。我们对 mysql 调优如何对流行开源 web 应用程序的性能产生积极影响的研究旨在向开发人员展示这一事实。

测试方法

我们对 laravel aimeos 的测试程序让我们可以使用种子数据来比较配置前后应用程序的性能。通过首先使用默认配置运行测试,我们获得了有价值的控制结果来与调整后的配置进行比较。

我们使用以下流程来准备和测试每个应用程序:

  1. 部署 laravel aimeos。
  2. 带有数据的种子数据库。
  3. 为 jmeter 准备测试。
  4. 运行测试 10 分钟 – 使用 blazemeter 性能测试平台进行 jmeter 测试。
  5. 调整 mariadb 配置 – 默认配置测试后,我们的设置保持不变,但 mariadb 针对工作负载、服务器资源和数据库大小进行了调整。
  6. 重新运行测试 – 使用 blazemeter 重复 jmeter 测试以调整配置。

测试期间我们在 github 上发布了 jmeter 测试、mysql 状态和 mysql 变量。

我们查看了哪些指标?

我们在本研究中查看的指标是:

  1. 响应时间(延迟)是发送请求并在服务器端处理请求到客户端收到第一个字节之间的时间。这是让您深入了解服务器性能的重要指标。
  2. 每秒查询数 是衡量数据库服务器每秒执行多少查询的指标。
  3. cpu 利用率.

我们收集了cpu 利用率 和每秒查询数 指标来比较工作负载。

laravel 艾梅奥斯

aimeos laravel 是一个流行的电子商务 web 应用程序框架,用于创建在线商店、市场和 b2b 应用程序。借助 aimeos,用户可以为 laravel 创建 api 优先的电子商务商店,该商店可以扩展以支持超过 10 亿种商品。它有 30 多种语言版本,安装量超过 300,000 次。

测试设置

为了测试 aimeos,我们以 10 个用户开始测试,但由于默认配置无法完成测试,我们不得不减少用户数量。

我们在数据库中植入了 500 mb 数据。
我们的测试时间是10分钟。

我们使用:

  • 安装了 debian 11 作为操作系统的 aws ec2 实例 c5.xlarge,
  • apache 作为网络服务器,
  • mariadb 10.5 设置为默认配置,数据库大小 500 mb。

mysql配置

aimeos laravel 使用的配置如下:

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

测试结果

aimeos laravel 测试结果展示了默认配置和调整配置之间的显着性能改进。

mysql 的优化导致平均服务器响应时间显着改善,从 1.4 秒减少到 800 毫秒以下。

响应时间(延迟)下降了 42%,平均cpu 利用率下降了 86%,而每秒查询数增加了令人难以置信的 291%,从每秒 12 个查询增加到 35 个查询。

结果图表如下:

MySQL 调优如何提高 Laravel 性能响应时间(毫秒),aimeos 调整 mysql 配置与默认值
MySQL 调优如何提高 Laravel 性能cpu 利用率 (%),aimeos 调整 mysql 配置与默认值
MySQL 调优如何提高 Laravel 性能每秒查询数,aimeos 调整 mysql 配置与默认值

社区贡献者

我们与 initlab 公司的 laravel 开发者 gevorg mkrtchyan 和 sergey sinitsa 合作调查了这一问题,非常感谢他们的专业知识。

sergey 部署了 aimeos,gevorg 准备了用于播种数据库的代码。

结论

我们使用 aimeos laravel 的测试程序在配置数据库服务器配置后,在

响应时间(延迟)、cpu 利用率和每秒查询数方面显示出显着的改进。

响应时间(延迟)下降了 42%,而cpu 利用率下降了 86%。 aimeos laravel 500mb 中的每秒查询次数 增加了 291%。

总之,mysql 调优是数据库管理的一个重要方面,可以对 laravel 应用程序的性能产生重大影响。性能不佳的 web 应用程序可能会导致页面加载时间增加、请求处理缓慢以及用户体验不佳,从而对 seo 和销售产生负面影响。通过使用 mysql 调优优化 web 应用程序的性能,企业和组织可以提高销售额、浏览量、转化率和 seo 排名。

通过这项研究,我们希望展示 mysql 调优作为提高 laravel 应用程序性能的一种手段的价值,并鼓励 laravel 开发人员在优化应用程序性能时考虑这种做法。

使用 releem 等工具,可以自动配置数据库以获得最佳性能,减轻软件开发团队的负担。

到这里,我们也就讲完了《MySQL 调优如何提高 Laravel 性能》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

版本声明
本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
使用 Python3 构建 Web 应用程序使用 Python3 构建 Web 应用程序
上一篇
使用 Python3 构建 Web 应用程序
Alpine Linux Docker 镜像,精简 PHP 框架容器
下一篇
Alpine Linux Docker 镜像,精简 PHP 框架容器
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    206次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    259次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    213次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    201次使用
  • CMMLU中文大模型评估基准:功能、使用教程与应用场景解析
    CMMLU
    深入了解CMMLU中文评估基准,涵盖67个学科主题,提供数据集下载、Zero-shot/Five-shot评估方法及排行榜,助力优化中文语言模型性能。
    190次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码