Multiuser Databases
- 设想这么一个情况,你作为管理者,正在生成一个租赁情况的报告,与此同时
- 一位用户归还了之前租赁的电影
- 一位用户租走了另外的一部电影
- 店铺新引进了几部新电影
- 这个时候就会引起一定的问题,因此,需要引入locking机制
Locking
- 两类locking
| Type desc | Cons |
|---|---|
| 当需要修改数据库内容时,写入者必须发出write lock的请求,且阅读数据库信息的用户也必须发出和接受read lock的请求,多个用户可以同时读取数据,但是,对单个表格的write lock只能派发给一个用户,而且,在write lock解除前,其他用户无法读取该表格 | 当同时有多个用户发出修改和阅读申请时,会需要等待很久 |
| versioning 当需要修改数据库内容时,写入者必须发出write lock的请求,而读者并不需要发任何形式 lock 而SQL Server可以保证读者会看到一个相对固定的数据(不会随着其他用户的修改而变化),从query开始到query结束 | 当query运行时间较长时,数据可能会被修改 |
- Lock Granularities
| Type | Desc |
|---|---|
| Table locks | 防止多个用户同时修改同一个table |
| Page locks | 防止多个用户同时修改table里同一个page内的信息 |
| Row locks | 防止多个用户用户同事修改table中的同一行 |