SQL 之 事务

来源:互联网 发布:集装箱运输软件 编辑:程序博客网 时间:2024/06/17 23:49

多用户数据库

数据库管理系统允许多人操作。所以如何处理潜在的同步问题等,一定程度上取决于数据库如何处理锁。


锁是数据库用来控制数据资源被并行使用的一种机制。当数据库的一些内容被锁定时,任何企图修改(也可能是读取)这个数据的用户必须等到锁被释放。

两种锁策略:

(1)数据库的写操作必须向服务器申请并获得写锁才能修改数据。读操作必须申请和获得读锁才能查询数据。多用户可以同时读取数据,而一个表(或其他部分)一次只能分配一个写锁,并拒绝读请求直到写锁释放;

缺点:较多并行读请求和写请求时等待时间过长,SQL Server采用这种。

(2)数据库的写操作必须向服务器申请并获得写锁才能修改数据。读操作不需要任何类型的锁就可以查询数据。另一方面,服务器要保证从查询开始到结束读操作看到一个一致的数据视图(即使用户修改,也要看上去相同)。称版本控制。

缺点:修改数据时存在长期运行的查询,则这个方法是有问题的。Oracle采用这种。


MySQL两种方法都包括(取决于用户对存储引擎的选择)。


锁的粒度:

表锁:组织多用户同时修改同一个表的数据

页锁:阻止多用户同时修改某表中同一页的数据(一页通常是一段2~16KB的内存空间)

行锁:阻止多用户同时修改某表中同一行的数据

SQL Server采用三者,Oracle只有行锁,MySQL采用三者(同样取决于用户对存储引擎的选择)。


事务

事务在数据库上是重要的概念。它在数据库上按照一定的逻辑顺序执行的任务序列,既可以由用户手动执行,也可以由某种数据库程序自动执行。

最简单直观的事务:创建更新或者删除记录等

事务实际上就是对数据库的一个或者多个更改。控制事务以保证数据完整性,并对数据库错误做出处理,对数据库来说非常重要。

实践中,通常会将很多 SQL 查询组合在一起,并将其作为某个事务一部分来执行。

一、事务的4大属性(ACID):

Atomic 原子性:保证任务当中所有的操作都执行完毕,否则,事务会在出现错误的时候终止,并回滚之前所有操作到原始状态;

Consistent一致性:保证事务成功执行,则数据库的状态得到了进行了正确的转变;

Isolated隔离性:保证不同事务相互独立、透明地执行;

Durant 持久性:即使出现系统故障,之前成功执行的事务的结果也会持久存在。


二、事务控制

四个命令:

(1)COMMIT 提交更改

(2)ROLLBACK 回滚更改

(3)SAVEPOINT 在事务内部创建一系列可以ROLLBACK的还原点

(4)SET TRANSACTION  命令事务


COMMIT命令:COMMIT;

COMMIT 命令用于保存事务对数据库所做的更改。
COMMIT 命令会将自上次 COMMIT 命令或者 ROLLBACK 命令执行以来所有的事务都保存到数据库中。


ROLLBACK 命令:ROLLBACK;
ROLLBACK 命令用于撤销尚未保存到数据库中的事务。
ROLLBACK 命令只能撤销自上次 COMMIT 命令或者 ROLLBACK 命令执行以来的事务


SAVEPOINT 命令:SAVEPOINT 是事务中的一个状态点,使得我们可以将事务回滚至特定的点,而不是将整个事务都撤销。

SAVEPOINT SAVEPOINT_NAME; #该命令只能在事务语句之间创建保存点(SAVEPOINT)。ROLLBACK 命令可以用于撤销一系列的事务。

回滚至某一保存点的语法: ROLLBACK TO SAVEPOINT_NAME;


RELEASE SAVEPOINT 命令:
RELEASE SAVEPOINT 命令用于删除先前创建的保存点。

RELEASE SAVEPOINT 的语法如下所示:
RELEASE SAVEPOINT SAVEPOINT_NAME; #保存点一旦被释放,就不能够再用 ROLLBACK 命令来撤销该保存点之后的事务了。


SET TRANSACTION 命令:
SET TRANSACTION 命令可以用来初始化数据库事务,指定随后的事务的各种特征。

例如,可以将某个事务指定为只读或者读写。

SET TRANSACTION [ READ WRITE | READ ONLY ];

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 墙里的电线坏了怎么办 鱼竿最前端断了怎么办 下雨天墙壁与管道间漏水怎么办 电饭锅的电线被雨淋了怎么办 钢琴跨八度手短怎么办 弹钢琴手指不灵活怎么办呢? 理发剪不锋利了怎么办 室外宽带线断了怎么办 接宽带光纤太短怎么办 装修光纤网线太短怎么办 宽带入户线断了怎么办 电信有无线没网怎么办 墙里的网线断了怎么办 墙里网线断了怎么办 3根网线断了怎么办 剪了层次的头发怎么办 小米6充电线坏了怎么办 小米6导航信号弱怎么办 麦多多充不了电怎么办 一加数据线坏了怎么办 小米耳机泡水了怎么办 公司拖欠工资公司破产了怎么办 苹果x外壳掉漆怎么办 手机壳按键很硬怎么办 棉质白衣服染色怎么办 白棉t恤混洗染色怎么办 包包被衣服染色了怎么办 白色衣服染了菜汁怎么办 一加3t屏幕刺眼怎么办 怀孕吃了好多杏怎么办 门破了个洞怎么办 钢圈轮毂刮花了怎么办 瓷砖用刀子划了怎么办 陶瓷洗手台裂了怎么办 洗车泵水管坏了怎么办 印胶浆里面渗入了发泡浆怎么办? 管子断在水管里怎么办 衣服上的织带缩水怎么办 真丝衣服拔缝了怎么办 顾客说衣服太花怎么办 铝和碱反应变黑怎么办