MySQL 调优如何提高 Laravel 性能
来源:dev.to
时间:2024-07-29 20:24:52 349浏览 收藏
golang学习网今天将给大家带来《MySQL 调优如何提高 Laravel 性能》,感兴趣的朋友请继续看下去吧!以下内容将会涉及到等等知识点,如果你是正在学习数据库或者已经是大佬级别了,都非常欢迎也希望大家都能给我建议评论哈~希望能帮助到大家!
mysql配置调优是数据库专业人员和管理员实施的数据库管理的重要组成部分。它的目的是配置数据库以适应其硬件和工作负载。但在数据库管理领域之外,mysql 配置调优的用处很大程度上被忽视了。
我们假设 mysql 调优可以显着影响 web 应用程序的性能。如果我们能够展示mysql调优的价值,我们相信企业和组织可能会热衷于更大规模地结合这种实践。
如何提高 laravel 应用程序性能
通过调优提高应用程序性能最好通过解决以下领域的综合方法来实现:
- 服务器资源 – cpu、内存、存储
- 软件配置 – linux、nginx、php…
- 数据库管理系统(dbms)配置 – mysql、postgresql
- 优化数据库方案并更改索引
- 优化应用程序 - 代码、查询、架构......
许多经验丰富的开发人员并不将数据库性能调优视为提高应用程序性能的机会,因为他们对此领域知之甚少。他们花费了大量时间来优化代码库,但已经达到了这样的地步:不再为投入的时间和精力带来有价值的结果。我们对 mysql 调优如何对流行开源 web 应用程序的性能产生积极影响的研究旨在向开发人员展示这一事实。
测试方法
我们对 laravel aimeos 的测试程序让我们可以使用种子数据来比较配置前后应用程序的性能。通过首先使用默认配置运行测试,我们获得了有价值的控制结果来与调整后的配置进行比较。
我们使用以下流程来准备和测试每个应用程序:
- 部署 laravel aimeos。
- 带有数据的种子数据库。
- 为 jmeter 准备测试。
- 运行测试 10 分钟 – 使用 blazemeter 性能测试平台进行 jmeter 测试。
- 调整 mariadb 配置 – 默认配置测试后,我们的设置保持不变,但 mariadb 针对工作负载、服务器资源和数据库大小进行了调整。
- 重新运行测试 – 使用 blazemeter 重复 jmeter 测试以调整配置。
测试期间我们在 github 上发布了 jmeter 测试、mysql 状态和 mysql 变量。
我们查看了哪些指标?
我们在本研究中查看的指标是:
- 响应时间(延迟)是发送请求并在服务器端处理请求到客户端收到第一个字节之间的时间。这是让您深入了解服务器性能的重要指标。
- 每秒查询数 是衡量数据库服务器每秒执行多少查询的指标。
- 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 个查询。
结果图表如下:
响应时间(毫秒),aimeos 调整 mysql 配置与默认值
cpu 利用率 (%),aimeos 调整 mysql 配置与默认值
每秒查询数,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学习网公众号,带你了解更多关于的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
449 收藏
-
445 收藏
-
184 收藏
-
237 收藏
-
210 收藏
-
192 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习