Blog icon indicating copy to clipboard operation
Blog copied to clipboard

存储过程与事务

Open codcodog opened this issue 7 years ago • 0 comments

存储过程与事务

存储过程

是一组为了完成特定功能的SQL语句集,经编译后存储在数据库。
存储过程是SQL语句和可选控制流语句的预编译集合,以一个名称存储作为一个单元处理。
存储过程在创建时进行编译,存储在数据库内,所以执行起来比单个SQL语句快。

存储过程的优点

  • 存储过程只在创造时进行编译,以后每次执行都不需要重新编译,而一般的SQL语句每次执行都需要编译,执行速度上相对存储过程会慢。
  • 当对数据库进行复杂操作(如:对多张表进行update,insert操作时),可将此复杂的SQL操作语句集封装成存储过程,进行调用。
  • 安全性高,可以对存储过程设置用户权限

存储过程的缺点

  • 可移植性差
  • 如果更改范围大,需要对存储过程中的参数进行修改时,比较繁琐

事务

一个事务是指:由一系列数据库操作组成的一个完成的逻辑过程。
例如:银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完成的逻辑过程,不可拆分。这个过程被称为一个事务。
事务,可以说是一个特殊的存储过程。

事务四大特性(ACID)

  • 原子性(atomicity):一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
  • 一致性(consistency):在事务开始之前和事务结束后,数据库的完整性没有被破坏。
  • 隔离性(isolation):数据库允许多个兵法事务同时对其数据库进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离等级分为:读未提交,读提交,可重复读和串行化。
  • 持久性(durability):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

codcodog avatar Mar 15 '17 15:03 codcodog