并发控制是DBMS的关键技术,并发控制技术也称为同步机制,其实现通常依赖于底层的并发控制机制。操作系统提供了多种同步对象,如事件 Event、互斥锁 Mutex和条件变量 Cond、信号量Semaphore、读写锁 RWLock、自旋锁 Spinlock等。数据库管理系统自己实现封锁主要是考虑:
锁语义加强:OS只提供排它锁。为了提高并发度,数据库至少需要共享锁和排它锁,即读锁和写锁;...
分类:
数据库 时间:
2015-01-30 10:50:25
阅读次数:
276
排它锁又称为写锁((eXclusive lock,简记为X锁)),若事务T对数据对象A加上X锁,则只允许T读取和修改A,其它任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。它防止任何其它事务获取资源上的锁,直到在事务的末尾将资源上的原始锁释放为止。在更新操作(INSERT、UPDATE 或 ...
分类:
其他好文 时间:
2015-01-20 21:54:57
阅读次数:
208
首先,来看下使用system.threading.monitor对资源进行保护的思路:
即,使用排它锁,当线程A需要访问某一资源时,对其进行加锁,线程A获取到锁以后,任何其他线程如果再次对资源进行访问,则将其放到等待队列中,知道线程A释放锁之后,再将线程从队列中取出。
主要的两个方法:
Enter
Exit
获取锁
...
分类:
其他好文 时间:
2015-01-20 20:31:34
阅读次数:
144
Insert语句加/*+APPEND*/ hint在循环中单条提交,由于/*+APPEND */ hint是在高水位线以上插入的特性,导致每提交一次,就会取一个新的block存放,高水位就上推一个block,以及/*+APPEND */ hint会给表加6级排它锁的特导,导致必须在commit后才能插入新的数据,大量单条/*+APPEND */插入,使得表急剧增大,除对insert本身造成性能影响之外,对以后的select、update、delete更是造成更巨大的影响。...
分类:
移动开发 时间:
2015-01-17 11:16:50
阅读次数:
199
一直对多线程有恐惧,在实现共享锁和排它锁之后,感觉好了很多。 共享锁 就是查询的时候,如果没有修改,可以支持多线程查询; 排它锁 就是修改的时候,锁定共享锁,停止查询,同时,锁定排它锁,只允许一个线程进行修改,修改完成后,再解开共享锁; 心路历程: 一开始的想法是,绝对不调用 ...
分类:
编程语言 时间:
2015-01-07 14:40:57
阅读次数:
512
要定义磁带上第n个文件,须要依次经过前面n-1个文件。假设磁带上有n个文件,长度分别为L[0],L[1], ..., L[n-1]且被访问的概率分别为P[0],P[1],...,P[n-1],请问怎样安排它们在磁带上的存储顺序最好?思考过程为:从假设概率相等,长度不一样,得出按照文件长度由短到长地将...
分类:
其他好文 时间:
2014-12-27 21:37:15
阅读次数:
174
with nolockWITH (NOLOCK)相当于未提交读(READ UNCOMMITTED),意思是指定语句可以读取已由其他事务修改单尚未提交的行,在未提交读级别运行的事务,不会发出共享锁来防止其他事务修改当前事务读取的数据,也不会被排它锁阻塞,所以WITH (NOLOCK)可以改善在线大量查...
分类:
其他好文 时间:
2014-11-27 23:37:22
阅读次数:
242
1、什么是共享锁和排它锁
共享锁就是允许多个线程同时获取一个锁,一个锁可以同时被多个线程拥有。
排它锁,也称作独占锁,一个锁在某一时刻只能被一个线程占有,其它线程必须等待锁被释放之后才可能获取到锁。
2、排它锁和共享锁实例
ReentrantLock就是一种排它锁。CountDownLatch是一种共享锁。这两类都是单纯的一类,即,要么...
分类:
其他好文 时间:
2014-11-16 14:41:40
阅读次数:
220
题目意思:
给定一个非负整数,问能否重排它的全部数字,使得重排后的数能被8整除。输入格式:多组数据,每组数据是一个非负整数。非负整数的位数不超过10000位。输出格式每组数据输出一行,YES或者NO,表示能否重排它的全部数字得到能被8整除的数。注意: 重排可以让0开头。
题目分析:
判断一个数是否能够被8整除,只需要判断这个数的后三位是否能够整除8即可,对于此题需要模拟判断所有的后三位数重排...
分类:
其他好文 时间:
2014-11-13 22:35:52
阅读次数:
226