gpt4 book ai didi

php - MySQL应用程序性能问题

转载 作者:行者123 更新时间:2023-11-29 19:30:01 25 4
gpt4 key购买 nike

我们希望基于 MySQL 和 PHP 的应用程序获得更好的性能。

当前的情况是,电子学习系统会根据一周中的某一天和/或一天中的某个时间接收一些“突发”的查询。(例如来自不同学校的数百名学生同时开始训练)

正如您可能猜到的,这些系统始终需要实时计算。

一般来说,我们很少有慢速查询,当它们出现在日志中时,我们会尝试对其进行改进。

硬件是自托管的,目前是 VPS,不是我们的硬件,但我们将硬件升级作为解决方案的一部分。

我们有一个读/写密集型的特定表。我们认为这涉及到该表的磁盘访问。 (学习日志)

我们正在尝试找出一种可以提高性能的硬件和/或软件设置,尤其是在需要该日志表时。

我们正在考虑的一个解决方案是使用复制来平衡“写入”和“读取”查询。 (代理SQL + 复制)我们对这种设置的担心是如果主服务器不可用会发生什么......

我们目前正在开发的一种软件功能是创建一个“汇总”表,该表大约每天只计算一次。这应该至少可以在应用程序的两个屏幕上释放一些压力。这种情况下的瓶颈似乎与临时表的创建和连接表的数量有关。

我可以根据需要添加详细信息,请随时询问。

编辑:重新制定

可以使用哪些 MySQL 设置来获得更好的性能?复制、集群还是其他?

非常感谢您抽出时间。

最佳答案

由于您没有在问题中添加任何代码,所以我只是一般性地回答您:

  1. 通过memory_get_usage()计算内存使用量。 将其放在代码的最后一行

  2. 通过sys_getloadavg()检查加载平均值。 将其放在代码的最后一行

  3. 通过microtime()检查运行时间。 Accurate way to measure execution times of php scripts

  4. 通过以下方式检查哪个查询花费更多:select * from sys.x$statement_analysis

  5. 仅通过一次运行来计算性能并尝试使其变得更好。

  6. 找到您要进行哈希处理的位置。例如找到您在哪里使用crypt。某些哈希方法可能会花费您太多费用。找到你真正不需要它们的地方,在那个地方你可以使用低成本散列,如sha1md5。例如,如果您在公共(public)文件夹中对用户头像进行哈希处理,则可以使用 md5 之类的内容来降低成本。 但在安全性很重要的情况下,你永远不会追求性能。例如,密码哈希永远不会追求性能。

  7. 你可以缓存一些可以缓存的地方。它确实可以帮助您提高整体表现。阅读PHP Cache Dynamic Pages To Speed Up Load Times 。您还可以使用 Apache How To Configure Content Caching Using Apache Modules On A VPS 进行缓存和 nginx A Guide to Caching with NGINX and NGINX Plus .

  8. 在您的查询中,不要使用不适用于索引的内容(您不能总是这样做,但可以尽力而为)。例如,find_in_set 对性能有很大影响。特别是当您处理大量文件时。

  9. 如果您确实认为创建日志会影响您的性能,请将日志保存在另一台服务器中。您可以使用IP从当前服务器连接到另一台服务器上的MySQL。您也可以为此制作 API。

  10. 始终思考更好的架构。有时,通过审查代码,您会发现某些内容可以被删除或用更好的想法替换。

关于php - MySQL应用程序性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com