连接MySQL数据库

时间:2013-02-12 12:07:49

标签: mysql connection

可能是一个虚假的问题,但我无法弄清楚。这是一个概念问题。 我有一个网络平台,用户可以存储大约500个同时连接的东西。 在性能/安全性方面,最佳方法是什么:

  • 每次我需要从中获取数据时(每次他转到另一个页面BTW)将用户连接到数据库并在我抓住它们后关闭连接? 或者
  • 在登录时将用户ONCE连接到数据库,保持链接到数据库(如在$ _SESSION中)并在注销时终止连接? 或
  • 在登录时,几乎抓住用户表中的所有内容,将其配置文件与其他所有配置文件一起抓取,将它们放在$ _SESSION中,只在需要更新/插入时连接到数据库?

连接本身很耗时,这就是为什么我在寻找最好的方法。 但另一方面,我总是听到“总是尽快关闭你的数据库连接”

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我说这在很大程度上取决于您的具体用例和服务器设置。确切知道的唯一方法是尝试不同的解决方案并分析您的代码。

通常,当您分析首先选择的解决方案时,您将获得有关导致延迟的原因以及等待/处理时间的最大贡献者的提示。通过这种方式,您可以更好地猜测下一个(并改进的)解决方案。

通常,它是一种很好的方法,可以懒惰地进行评估,然后尽可能地进行缓存。对于Web应用程序,像Memcached或Redis这样的非关系型数据库就是一种事实上的标准(至少在我的经验中)。

如果保持数据库连接处于打开状态,您应该知道只能在数据库设置为处理时运行尽可能多的并发查询。尽快关闭连接可以降低数据库并发性。 如果连接建立引入了大量延迟,也许您应该考虑偶尔获取所有相关数据并缓存它们。确切知道的唯一方法是分析您的申请。

更新

  

感谢您的回复。我将对此进行分析以了解哪些方法可能更好。   我将看看MemCached。我想稍后再看,但我想   那将是正确的时间。 - fperr

我最初也被MemCached推迟了,但它根本不复杂。它作为(哈希)地图/字典工作,人们通常只是在MemCached实例上保存会话数据,并通过会话ID或类似的东西对其进行索引。

祝你的项目顺利:))