【问题标题】:php - which is faster call mysql connection + query OR call a data file?php - 调用mysql连接+查询或调用数据文件哪个更快?
【发布时间】:2011-10-02 00:58:16
【问题描述】:

晚上好,
我有一个包含用户数据的 mysql 表
我使用mysql_connect, mysql_query, mysql_fetch_array 获取用户数据
此查询应在每次页面加载时运行并为成千上万的用户运行
那么哪个更好更快?每次页面加载都使用 mysql 吗?
或者将所有用户数据结果缓存在一个文件中并包含它?

【问题讨论】:

  • 为什么不用memcache缓存mysql查询?
  • 您是否已经拥有成千上万的用户,或者这只是您的梦想?
  • 这取决于很多事情,主要是你本地磁盘的速度与mysql服务器的速度,mysql的查询缓存是否启用,数据的易失性等等。这是per -用户数据?它多久改变一次?我们在谈论多少数据?
  • @zerkms,两者都没有..我正在从事一个肯定会有巨大流量的项目......
  • 另外:你为什么要为似乎是一个新项目的项目使用已弃用的 mysql 函数?使用 PDO。

标签: php mysql performance file caching


【解决方案1】:

我认为正确的答案是混合。您应该缓存最常见的查询结果并“即时”重试另一个

【讨论】:

    【解决方案2】:

    如果是登录用户的用户数据,我会将他们的用户信息存储在会话中,而不是一遍又一遍地获取。

    如果它会频繁更改并且您担心数据库性能,一个不错的选择是使用类似memcached 的方式将数据缓存在内存中。您可以在每次请求时从缓存中请求数据,如果用户信息发生变化,只需更新缓存,下次获取时它将获取新数据,除非缓存条目没有,否则无需访问数据库存在。

    【讨论】:

    • 你好,draw010。我已经为此开会了。但是这个会话应该从 mysql 中检查,所以我使用 mysql 查询它。我从来没有使用过 memcached,但是将数据存储在内存中会增加内存负载,对吗?我需要一些更快更好的东西,而不是在数据库或内存中加载......
    • 所需的内存量取决于您将为每个用户存储多少数据以及您拥有多少用户,它可以在单独的服务器上或与您的站点相同的服务器上。我没有看到比内存缓存更好的选择,或者如果必须从数据库中获取。您可以在 mysql 中启用查询缓存,以便它可以存储未更改的查询结果。如果用户信息发生更改,您可以将其写入可以检查的文件,但这可能不会让您获得太多信息并增加复杂性。
    • @al-dr:内存比 CPU 或磁盘 IO 便宜。因此,对于“已经拥有巨大流量的大网站”来说,购买更多 RAM 应该不是问题
    • 是的,像 memcached 这样的分布式缓存会有所帮助,因为如果您在 2 台服务器上运行 memcached 并为每个缓存分配 2GB 的 RAM,您将获得总共 4GB 的缓存空间,而不是 2GB。这是因为它将它分布在所有服务器上。 4GB 的缓存可能可以存储相当数量的用户数据,具体取决于您需要缓存的用户信息量。
    • @zerkms,那么为什么使用 mysql_query 来选择 col1,col2,col3,col4 而我们可以对每一列使用一个查询并在循环中获取主题?!!!亲爱的,你怎么想的?你为什么要让它变得困难?从您的回复中您需要我先使用任何东西,然后尝试搜索代码更新和内存负载减少!我认为这根本不聪明..谢谢..
    猜你喜欢
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2023-03-17
    • 2011-01-07
    相关资源
    最近更新 更多