标签:
By良少http://blog.csdn.net/shendl
关系型数据库表结构的设计,有下面两个设计技巧:
逻辑主键,就是除了id字段外的不重复的字段。我们设计数据库的外键关联时,不使用逻辑主键,而是使用物理主键。
这是因为,物理主键肯定是主键,因为它是自增的。(对于不支持自增字段的关系数据库,可以使用uuid保证物理主键的唯一性)
考虑这样一种数据库的应用场景:
需要更新虚拟机的状态。多个事务可能会同时更新虚拟机的状态为start或者stop。这种状态的更新和前一个阶段的状态是无关的,因此不需要锁定记录。直接更新即可。此时不需要使用悲观锁或者乐观锁。
如果这个表添加了version字段,直接忽略对version字段的比较和更新即可。
SQL语句如下:
update studentVersion set name=? where id=?
设计关系型数据库的表时,需要给表添加一个ID字段(自增字段,或者uuid字段)和一个version字段(数值类型)。ID字段作为物理主键,用于保证记录的不可重复性和用作外键关联。
version字段用于实现乐观锁,提供比悲观锁更好的性能。特别是对于UI显示并可能出现并发更新的数据,更需要使用乐观锁来提升数据库访问性能。
对于后台自动更新的任务,可以使用乐观锁实现。但需要在冲突发生时实现自动退让。也可以使用悲观锁在数据库上对事务进行排队来解决更新冲突问题。
对于不关心记录的状态之间关系的场景,可以直接更新记录,忽略掉version字段的检测和更新。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/shendl/article/details/47442859