哪个更高效,让每个用户创建数据库连接或缓存?

时间:2014-12-05 00:05:40

标签: html mysql performance

我不确定缓存是否是正确的术语,但我的目标是建立一个显示数据库数据的网站。

我的问题:很有可能存在大量流量,所有数据都包含在数据库中。

我的假设解决方案:如果我创建一个单独的程序(例如在java中)每隔几秒连接到数据库并使用新数据更新html文件(显示数据的位置)会更快吗? (这也会增加安全性,因为用户永远不会连接到数据库)或者我应该让每个用户创建一个到MySQL的连接(使用php)并获取数据?

如果您在类似情况下有任何经历,请分享,如果我没有正确说出标题,我很抱歉,这是一个非常具体的问题,我甚至不确定我是否清楚地解释了自己

1 个答案:

答案 0 :(得分:1)

以下是您可以考虑的一些想法。

首先,我不建议您创建文件但是信任MySQL。但是,需要配置环境以支持流量/应用程序。

您应该多了解一下您的数据(表中的数据会发生多大变化?您针对数据运行了哪些类型的查询。您的查询是否已优化?)

确保您的表格已正确优化并编制索引。确保所有查询都快速运行(没有任何因素导致长行锁定。)

如果您的表没有经常更新,您应该考虑使用MySQL缓存,因为这会减少您的IO并提高查询速度。 (等等!如果您的表一直在更新,这将会大大超过服务器性能)

您的查询缓存设置为“开启”。根据我的经验,除非您的数据在所有表格上都没有变化,否则这总是一个坏主意。当你将它设置为“ON”时,MySQL将缓存每个查询。然后,只要表中的数据发生变化,MySQL就必须清除缓存的查询“它会在清理缓存时更加努力,这会给你带来糟糕的性能。”我喜欢把它设置为“ON DEMAND” 从那里你可以控制哪个查询应该缓存,哪些查询不应该使用SQL_CACHESQL_NO_CACHE

您要查看的另一件事是您的服务器配置和规格。 您的服务器有多少物理RAM? 您使用什么类型的硬盘? SSD的速度是不是以什么速度旋转?也许15k? 您在运行MySQL的操作系统是什么? 硬盘上的RAID设置如何? “RAID 10或RAID 50”将在这里为您提供很多帮助。 你的处理器速度会有很大的不同。

如果你不使用MySQL 5.6.20+,你应该考虑升级,因为MySQL已得到改进,可以为你提供更多帮助。 你的服务器有多少RAM?您的innodb_log_buffer_size设置为物理RAM总量的75%?你在使用innodb表吗?

您还可以使用MySQL复制来增加数据的读取源。因此,您有多个具有相同数据的服务器,您可以指出一半的流量从服务器A读取,另一半从服务器B读取。因此,同一项工作将由多个服务器处理。

以下是您需要考虑的一个论点:Facebook使用MySQL并且每秒有数百万次点击,但它们在100%的时间内上升。确实,他们拥有数万亿美元的预算,他们的网络非常庞大,但这里的想法是信任MySQL来完成工作。