php:会话与数据库

时间:2009-07-16 23:24:23

标签: php mysql performance session

我有一个从数据库中检索其成员(或多或少10个成员)的类。

我的问题是:每次从db(MySQL)获取它们是否更有效,只在会话的数组中留下一个ID或直接将它们存储在会话的数组中?

性能方面的差异是如此之大? (给出一个说100.000行的数据库)

3 个答案:

答案 0 :(得分:11)

考虑到你在会话中存储了一个ID,会话最有意义。执行session_start()会加载您的会话信息,因此无论您是否已经加载了1个或10个项目,这在很大程度上是无关紧要的(除非它们非常大但在任何情况下都会成为问题)。

坚持会议。

如果您真的关心速度,请使用内存缓存,如APC或memcache。担心来自文件系统或数据库的10个项目的速度令人分心。差别很小,无关紧要。

注意:以上假设有两件事:

  1. 查询是高效的(从100k中检索10行应该在0.1秒内完成);和
  2. 您正在进行一次查询而不是10次。

答案 1 :(得分:8)

取决于'有效'的意思。一个人的时间效率,一个磁盘空间效率。除非你的要求处于频谱的任何一端,否则很难将两者相互判断。您可能只需要掷硬币,测量一段时间内的性能,并根据观察到的任何问题进行调整。

  

过早优化是其根源   万恶之物。

答案 2 :(得分:2)

如果正确设置了索引,那么表中是否有100,000行或10,000,000行是无关紧要的。

虽然说PHP的基于默认文件的会话肯定比从数据库中检索要快,但在你的网站使用频繁之前你不会注意到差异,例如每秒5000多个查询。