php:会话与数据库

Fed*_*oca 7 php mysql performance session

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

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

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

cle*_*tus 11

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

所以坚持会议.

如果您真的关心速度,请使用内存缓存,如APC或memcache.担心来自文件系统或数据库的10个项目的速度令人分心.差异将是如此微小,以至于无关紧要.

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

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


Bob*_*ack 8

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

过早优化是万恶之源.