若事务T1对数据D1加了共享锁,事务T2T3分别对数据D2和数据D3加了排它锁,则事务()

D.T1对数据D2D3加共享锁都失败,T2T3对数据D1加共享锁成功

请先 登录 后评论

1 个回答

亚里士德
擅长:互联网

知识点:数据库控制-并发控制

位于9.6.3章节。

---

数据库的控制还有一个事务管理章节9.6.1,不过这个太简单了一般不会考:也就是把多个有顺序的几乎同时对数据库表的操作放在一个事务里,一起提交,如果其中有一个失败,方便全部回滚。

本题考察并发控制技术中的两个封锁方法。

首先要知道最最关键的东西,这个锁是用来干嘛的。用来限制读和写功能的。排他锁和共享锁,顾名思义的来对比一下,排他肯定更严格,实际上也确实是这个样子的。

排他锁:事务1对对象1加此锁,那么就可以保证只有这个事务可以对该对象进行修改和查看。其他事务都不行,也不能再加锁。

共享锁:事务2对对象2加此锁,那么就可以保证该对象不被任何事务修改,(包括自己也不能修改。new bing提示:如果您想在事务内修改数据项,您需要使用排他锁或更新锁(U)。更新锁是一种特殊类型的排他锁,在修改之前先读取数据项,并且在修改之前不会释放。),任何对象都可以读,任何其他对象都可以加同样的共享锁。

可以总结一下:

修改权限:两个锁都是不让对象被其他事务修改的。不同之处在于,事务加上排他锁自己可以修改,加上共享锁后自己也无法修改。

读取权限:排他锁是不让别人读,只允许自己读;共享锁是大家都可以读。

加锁权限:排他锁不允许其他事务加锁,共享锁仅允许加同样的共享锁。

所以本题就选D。

请先 登录 后评论