【发布时间】:2010-11-11 13:35:29
【问题描述】:
我有一个从数据库中检索其成员(或多或少 10 个成员)的类。
我的问题是:每次从数据库(MySQL)中获取它们是否更有效,只在会话的数组中留下一个 ID 或将它们直接存储在会话的数组中?
性能方面的差异这么大吗? (假设数据库有 100.000 行)
【问题讨论】:
标签: php mysql performance session
我有一个从数据库中检索其成员(或多或少 10 个成员)的类。
我的问题是:每次从数据库(MySQL)中获取它们是否更有效,只在会话的数组中留下一个 ID 或将它们直接存储在会话的数组中?
性能方面的差异这么大吗? (假设数据库有 100.000 行)
【问题讨论】:
标签: php mysql performance session
取决于您所说的“高效”是什么意思。一个是节省时间的,一个是节省磁盘空间的。除非您的要求处于光谱的两端,否则很难对两者进行判断。抛硬币、随时间推移测量性能并根据观察到的任何问题进行调整,您可能会做得很好。
过早的优化是 万恶之源。
【讨论】:
考虑到您在会话中存储了一个 ID,会话是最有意义的。执行 session_start() 会加载您的会话信息,因此在此之后您是否加载了 1 个或 10 个项目在很大程度上是无关紧要的(除非它们真的很大,但无论如何这都会是一个问题)。
所以坚持这次会议。
如果您真的关心速度,请使用 APC 或 memcache 等内存缓存。担心文件系统或数据库中 10 个项目的速度会让人分心。差异将非常小,以至于无关紧要。
注意:以上假设有两件事:
【讨论】:
如果您的索引设置正确,您的表中是否有 100,000 行或 10,000,000 行是无关紧要的。
话虽如此,PHP 的默认基于文件的会话肯定比从数据库中检索要快,但在您的网站被大量使用(例如每秒数百或数千个查询)之前,您不会注意到差异。
【讨论】: