我们希望通过基于MySQL和PHP的应用程序获得更好的性能。
目前的情况是一个电子学习系统,它根据一周中的某一天和/或一天中的某一小时来接收一些“突发”的查询。(例如,来自不同学校的数百名学生同时开始演练)
正如你可能猜到的,这些系统一直需要实时计算。
一般来说,我们有很少的慢查询,当它们出现在日志中时,我们会努力改进它们。
硬件是自托管的,目前是VPS,它不是我们的硬件,但我们将硬件升级作为解决方案的一部分。
我们有一个读/写密集型的特定表。我们认为这涉及到对该表的磁盘访问。(学习日志)
我们正在尝试找出可以提高性能的硬件和/或软件设置,特别是在需要日志表的情况下。
我们正在考虑的一种解决方案是使用复制来平衡“写”和“读”查询。(proxySQL +复制)我们担心的是,如果主服务器不可用,会发生什么情况……
我们目前正在开发的一种软件可能性是创建一个每天只计算一次的“摘要”表。这至少会在应用程序的两个屏幕上释放一些压力。这种情况下的瓶颈似乎是临时表的创建和连接表的数量。
我可以根据需要添加详细信息,请不要犹豫询问。
编辑:重新制定
可以使用哪些MySQL设置来获得更好的性能?复制、群集、其他?
非常感谢您的宝贵时间。
发布于 2017-01-25 19:34:27
因为你没有在你的问题中放任何代码,所以我只是一般地回答你:
memory_get_usage()计算内存使用量。把它放在你的代码的最后一行,检查sys_getloadavg()的平均负载。把它放在你的代码的最后一行,用microtime()检查运行时间。Accurate way to measure execution times of php scriptsselect * from sys.x$statement_analysiscrypt的位置。一些散列方法可能会花费您太多的成本。找到你真正不需要它们的地方,在那里你可以使用低成本的散列,比如sha1或md5。例如,如果你在一个公共文件夹中散列用户头像,你可以通过使用像md5这样的东西来降低成本。performance.find_in_set对性能有很大的影响。https://stackoverflow.com/questions/41849414
复制相似问题