首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL应用程序性能问题

MySQL应用程序性能问题
EN

Stack Overflow用户
提问于 2017-01-25 18:40:35
回答 1查看 194关注 0票数 0

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

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

正如你可能猜到的,这些系统一直需要实时计算。

一般来说,我们有很少的慢查询,当它们出现在日志中时,我们会努力改进它们。

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

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

我们正在尝试找出可以提高性能的硬件和/或软件设置,特别是在需要日志表的情况下。

我们正在考虑的一种解决方案是使用复制来平衡“写”和“读”查询。(proxySQL +复制)我们担心的是,如果主服务器不可用,会发生什么情况……

我们目前正在开发的一种软件可能性是创建一个每天只计算一次的“摘要”表。这至少会在应用程序的两个屏幕上释放一些压力。这种情况下的瓶颈似乎是临时表的创建和连接表的数量。

我可以根据需要添加详细信息,请不要犹豫询问。

编辑:重新制定

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

非常感谢您的宝贵时间。

EN

回答 1

Stack Overflow用户

发布于 2017-01-25 19:34:27

因为你没有在你的问题中放任何代码,所以我只是一般地回答你:

  1. memory_get_usage()计算内存使用量。把它放在你的代码的最后一行,检查
  2. sys_getloadavg()的平均负载。把它放在你的代码的最后一行,用microtime()检查运行时间。Accurate way to measure execution times of php scripts
  3. Check哪个查询花费了你更多的钱:只需运行一次select * from sys.x$statement_analysis
  4. Calculate性能,并尝试使其变得更好。
  5. 找到您正在进行散列的位置。例如,查找您正在使用crypt的位置。一些散列方法可能会花费您太多的成本。找到你真正不需要它们的地方,在那里你可以使用低成本的散列,比如sha1md5。例如,如果你在一个公共文件夹中散列用户头像,你可以通过使用像md5这样的东西来降低成本。performance.
  6. You可以缓存一些可以缓存的地方,但是你永远不会去追求安全方面的性能,比如密码散列的。它真的可以帮助你提高整体性能。阅读PHP Cache Dynamic Pages To Speed Up Load Times。此外,您可以使用Apache和nginx A Guide to Caching with NGINX and NGINX Plus.
  7. In缓存您的查询,而不使用不能与索引一起工作的内容(您不能总是这样做,但请尽您所能)。例如,find_in_set对性能有很大的影响。
  8. 如果你真的认为做日志会影响你的性能,那就把日志保存在另一台服务器上。您可以使用IP从当前服务器连接到另一台服务器上的MySQL。
  9. 总是考虑更好的架构。有时,在审查代码时,你会发现一些东西可以被丢弃或替换为更好的想法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41849414

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档