我需要建一张表:
OrderId* UserId OrderDate Total
1 1 2017-1-1 100
2 1 2017-1-1 120
3 9 2017-1-1 20
4 12 2017-1-1 88
一般情况下我们就用OrderId作为主键,查询的时候也是where UserId='x'作为条件查询的。
但是我想知道是否有必要建立这样的结构:
UserId* OrderId* OrderDate Total
1 1 2017-1-1 100
1 2 2017-1-1 120
9 3 2017-1-1 20
12 4 2017-1-1 88
同时把UserId和OrderId作为复合主键,当用户1在更新的数据的时候,用户9来查询时能够立即返回结果,而不用等1锁表结束?
是否这样设计在多用户需求的场景下可以划分数据的操作细粒度?
求大神来帮忙,小的感谢!
不建议在数据库层面加锁,建议通过服务端的内存锁(锁主键)。当某个用户要修改某个id的数据时,把要修改的id存入memcache,若其他用户触发修改此id的数据时,读到memcache有这个id的值时,就阻止那个用户修改。原文详情
解决方案2:毫无必要,根据主键更新数据只会锁定一行数据,而不是锁定整个表。
解决方案3:沉下去了呢,没有人搞这个吗?这里难道都是JS专区?