SQL server基础知识
SQL server命令
数据库的安全与保护
数据库系统的核心是数据库管理系统
并发控制技术
基本介绍:数据库实现并发控制的技术有很多种,比如封锁技术、时标技术和版本更新技术等,而封锁技术 在商用话数据库系统中使用最为普遍。
封锁技术
1.常见的两种锁
? (1)排它锁:又称X锁,一个事务对一个数据对象建立了排它锁,那么可以对该数据对象进行增删改查操作,而其它事务不能。一旦建立了排他锁,该数据对象不能再建立其它锁。
? 需要注意的是,数据对象再遇到update 语句时,会自动建立X锁
? (2)共享锁: 又称S锁,一个事务对一个数据对象建立了共享锁,那么只可以对数据对象进行查询、读操作,删除等更新操作不行。其它事务可以对该数据对象建立共享锁,但不能建立X锁,也就是其它事务也只能进行读操作(而且也得上S锁才能进行读操作)
2.封锁粒度:指封锁对象的大小。封锁的对象可以是属性、属性值集合、元组、关系模式、数据库等。
? 那么封锁粒度越大,也意味着开销也会越大。因此设置封锁粒度大小从两个方面考虑开销成本和事务对某个对象操作的频繁度 ,如一个事务对一个元组对象操作比较少,则可以将元组设为封锁对象,反之,就得对元组对象的关系表或者视图设置为封锁对象。又或者,如果一个事务经常对表结构进行修改,或者经常处理对各关系,那就得再将数据库设置为封锁对象
3.封锁协议
? 一级协议:如果一个事务要修改某个数据对象,则必须加上X锁(排它锁) ,直到事务结束后 才释 放,这种协议可以防止因为丢失修改 引起数据不一致的问题。
? 二级协议:如果一个事务读取一个数据对象前,必须先加上S锁(共享锁) ,直到读取完成后 才释 放,这种协议可以避免因为读取脏数据 引起的问题。
? 三级协议:如果一个事务读取一个数据对象前,必须加上S锁(共享锁) ,直到事务执行结束后 才释 放,这种协议可以避免不可重复读的问题
? 注意:1.二级协议和三级协议虽然在读取数据对象前,上锁都是一致,但释放时间不同。
? 2.不可重复读,指的是事务两次读取的同一个数据不一样。
? 3.可重复读,指的是事务两次读取的同一个数据都一样。
? 4.读已提交,事务A只有提交了修改后的数据后,事务B才能读取到。这种级别会引起不可重复 读的问题。
? 5.可重复读隔离级别高于读已提交,事务A提交了修改后的数据后,事务B读取不到,这样子事 务两次读取的内容都是一样(未修改前的内容),但会出现幻读的情形 。 提交了修改后的数据后,事务B读取不到,这样子事 务两次读取的内容都是一样(未修改前的内容),但会出现幻读的情形 。
|