目前用 mysql
有如下俩张表:
| id | parend_id | is_black | 昵称等其他字段 | 
|---|---|---|---|
| 1 | 0 | 0 | |
| 2 | 1 | 0 | |
| 3 | 2 | 0 | |
| 4 | 2 | 0 | 
| id | uid | 所有上级 | 所有下级 | 
|---|---|---|---|
| 1 | 1 | 2,3,4 | |
| 2 | 2 | 1 | 3,4 | 
| 3 | 3 | 1,2 | |
| 4 | 4 | 1,2 | 
需求如下:
基于某一用户,检索他的下级, 例如 基于 id 2 下, 检索昵称为 cnbattle 的用户
拉黑某用户,拉黑后,删除并清空该用户的关系,下级数据依次上移到该用户的上级,
假设基于上述的表: 拉黑 id 2 的用户,那么更新为如下的数据
基础表:
| id | parend_id | is_black | 昵称等其他字段 | 
|---|---|---|---|
| 1 | 0 | 0 | |
| 2 | 0 | 1 | |
| 3 | 1 | 0 | |
| 4 | 1 | 0 | 
关系表
| id | uid | 所有上级 | 所有下级 | 
|---|---|---|---|
| 1 | 1 | 3,4 | |
| 2 | 2 | ||
| 3 | 3 | 1 | |
| 4 | 4 | 1 | 
问题:
Q1: 检索,目前是基于关系表 where in, 虽目前能正常运行,但性能不好,有内存溢出的风险
Q2: 拉黑用户:是队列处理,当处理一个关系靠顶部的用户时,处理数据量会比较大(这个还好,队列慢慢处理也行)
基于上述情况,如果优化可以基本满足在简单加机器的情况下,让程序稳定运行的方案方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.