关于TimesTen的锁,有两个概念:
共享锁/读 和 排他锁/写、有意图的锁定和无意图的锁定。
共享锁/读 和 排他锁/写、有意图的锁定和无意图的锁定。
比如行锁就是一种有意图的锁定,是可以和其他行锁共享的一种锁,是我们要操作它而添加的锁定。比如一个地方是行锁,而另外一个地方需要表锁,因为对于锁管理器来说是两个不同的对象,是不知道他们之间的关系的,所以所有的行锁都需要有意的在相应的表加锁。
相关案例可以参考:http://blog.csdn.net/tangyun_/article/details/31091829
有意图的锁定实际上是在你操作的对象上加锁;所以,如果我们在某行上加X锁,那么同时会在该表上加IX锁;如果我们在某行上加S锁,那么同时会在该表上加IS锁;这样的目的是防止另外的请求在我们操作的行所在的对象请求类似X锁这样的情况。所以我们经常可以看到不同的事务在相同的表上持有IX锁,IX锁是可以共享的,但是可以防止其他事务在相同的表上请求并持有X锁。
我们甚至可以理解有意图锁定为系统为了保证一致性而不得不加的锁,无意图加上为我们需要操作它而加的锁。