- 论坛徽章:
- 0
|
大家好,我在做一个项目时,遇到了个问题,想求教下大家:
我的目的就是 :当手机通讯录更新时,我服务器这边能比较高效的完成数据库中相对应存储的通讯录也为最新。
我实现的大致流程是这样的:
假设当手机号为123456的手机通讯录进行了更新, 我服务器这边会触发一个操作A,即上传手机通讯录 ("上传"的含义即"放入本地数据库"):
A对数据库的基本流程如下:
{
....
delete from XXX where phonenum ='123456'; //1.先到数据库中将此号码涉及到的通讯录进行删除.
insert into xxx(...) values (新的通讯录); //2.然后将新的通讯录进行插入.
}
============================
由于在进行操作数据库的时候,涉及到表的加锁解锁以及等待问题,因此如果同时n个人进行操作,会出现表的等待问题,影响后续其他操作。 //此处会导致效率变低。
另外,在对表的操作过程中,delete以及insert都是十分耗时的。 //此处也会导致效率降低。
这个问题涉及到2个瓶颈:
1.因为手机通讯录的更改是随机的,也就是说 他有可能这次更新是增加了1条,也有可能是删除了1条,。所以我考虑了进行 ”先把之前的全部删除,然后把这次的全部插入“ 办法。
2.由于同时操作的人数很多而且几乎不断,也就是说,由于我多次频繁访问数据库的表,所以他们在操作的时候会面临数据库的压力比较大,而且表的加锁等待问题严重。
可是以我上述的思路来讲,我这样的效率特别慢。。 希望哪位有好想法的,或者有过此类经验的朋友 帮忙解答下,感激不尽。。谢谢谢谢!! |
|