工作之余抽点时间出来写写博文,希望对新接触的朋友有帮助。今天在这里和大家一起学习一下事务数据
一、锁(lock)
1、锁的念概:
数据库是一个多户用应用的同享资源。当多个户用发并的存取数据时,在数据库中就存在多个事务同时存取一同数据的况情。如果对种这发并操纵不加以控制就可能会读取和存储不正确的数据,坏破数据的一致性。
锁加是实现数据库发并控制的一个非常重要的技巧,当事务在对某个数据对象停止操纵前,先向系统发送求请,对其锁加,锁加后事务就对该对象有了必定的控制,在该事务释放锁之前,其他事务不能对数据对象停止操纵。
在oracle数据库中,它并非对某个表加上锁或者某几行加上锁,锁是以数据块的一个属性存在,也就是说,每一个数据块就存储着自己数据块中数据的息信,这个地方叫ITL(Interested Transaction List),凡在这个数据块上有活动的事务,它的息信就就会录记在里面供后续的操纵查询,以保障事务的一致性。
2、锁的分类:
按照户用来分
a)、动自锁(Automatic Locks):当停止一项数据库操纵时,在缺省况情下,系统动自为此数据库操纵得获有所须要的锁。动自锁分DML锁,DDL锁,system locks。
b)、表现锁(Manual Locks):在某些况情下,户用要需表现的锁定数据库操纵用到的数据,才能使数据库操纵更好的行执,表现锁是户用为数据库对象设定的。
按照锁级别来分
a)、同享锁(S):同享锁使一个事务对特定数据库资源停止同享问访——另一个事务也可以对此资源停止问访或得获雷同的同享锁,同享锁为事务高提发并性。
b)、排他锁(X):事务置设排他锁后,该事务独自的取获资源,另一个事务不能在此事务提交之前得获雷同对象的同享锁或排他锁。
按照操纵来分
a)、DML锁:用于控制发并事务中的数据操纵,保障数据的一致性和完整性,DML锁要主用于掩护发并况情下数据的完整性。它又分为:
TX锁(事务锁或行级锁):
TX锁要主对一个表中一行录记停止锁加,当停止Insert 、update、delete、merge和select ……for update 时,系统会动自取获TX锁,直到此事务commit或rollback,才能事务该锁。
当一个事务得获了行级锁(TX锁)时,同时此事务也会取获该行对应表级锁,表级锁可以止阻DDL的操纵,以保障数据的完整性。
TM锁(表级锁):
当一个事务在停止Insert、update、delete、merge和select ……for update时,系统会动自为该事务配分一个表级锁(TM锁)
文章结束给大家分享下程序员的一些笑话语录:
一条狗在街上闲逛,看见橱窗里一张告示:「招聘程序员。会编程,有团队精神,至少精通两种语言。均等机会。」
那条狗就进去申请,但是被拒绝了。
「我不能雇一条狗在公司里做事。」经理说。
狗不服气,指着告示上「均等机会」几字抗议。
经理没法,叹了口气,不屑地问道:「你会编程吗?」
那条狗默默地走到电脑前,编了个程序,运作准确。
「你有团队精神吗?」经理问。
那条狗掉头看了看门外,一大群野狗在外面虎视耽耽。
「我真的不能雇狗做这份工作。」经理气急败坏地说。
「就算会编程、有团队精神,但是我需要的雇员至少要能精通两种语言。」
那条狗抬头看着经理说:「喵-噢。」