【发布时间】:2009-07-29 05:54:03
【问题描述】:
好的,我有一个社交网络,到目前为止大约有 50,000 名用户,并且有一个朋友表显示网站上谁是你的朋友,这个表超过一百万行
这不是棘手的部分,我会显示用户发布的公告、状态帖子,以及仅对您朋友列表中的人可见的内容。 记住表的大小,到目前为止用户表大约 50,000 个,朋友表大约 100 万个
获取好友列表以了解向用户显示哪些状态帖子的一种方法是运行下面的此查询并将结果放入数组中
select friendid from friend_friend where userid=1 and status=1
然后我会将此数组转换为逗号分隔列表,并在 mysql 查询的 IN 子句中使用它,该查询获取允许该用户查看的帖子
希望到目前为止这是有道理的。
现在如果我将这个朋友数组保存到一个会话变量中,因为这个查询运行得非常频繁? 我看到的一个缺点是,如果用户在登录时将该人添加为朋友,他们会在该会话被重置之前显示为朋友,但除此之外,这对内存或任何会话使用的性能都会不好?
另请注意,有时登录的用户多达 500 个,有些用户的好友列表包含 10,000 个好友 ID,这是 PHP/MySQL 设置
关于会话数据的另一个问题,它存储在文件中而不是系统内存中正确吗?如果它在磁盘上而不是内存上,那么内存应该不是什么大问题?
【问题讨论】: