喜悦国际村 
» 游客:  注册 | 登录 | 搜索 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

招聘PHP开发人员(北京)

上一主题 下一主题
     
标题: [经验] mysql存储过程学习笔记--事务控制  
 
xieaotian (老老仙)
版主
Rank: 7Rank: 7Rank: 7


UID 82205
精华 1
积分 1270
帖子 1499
金钱 1270 喜悦币
威望 0
人脉 0
阅读权限 100
注册 2006-10-26
来自 老老神仙部落
状态 离线
[广告]: Enom域名自助付费 自助注册 自助PUSH 主流域名COM等一律57.99元年
mysql存储过程学习笔记--事务控制

要使mysql支持事务,表类型要用: InnoDB


1、 隔离级别


SET TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED |REPEATABLE READ | SERIALIZABLE}

默认为:REPEATABLE READ

在SQL99中,为了实现事务的完全隔离,定义了三种必须避免的现象:


1、读"脏"数据(dirty read):即事务在运行中读到了其它事务未提交的数据。
2、不可重复读(unrepeatable read):即事务在运行中再次读取同一数据时,可发现其它事务的更新。
3、"幻象"读(phantom read):即事务在运行中再次执行同一查询时,发现其它事务的更新。

只有避免上面三种现象,才能实现真正意义上的隔离,或者称是可串行的。但是,此时事务之间因为冲突而等待的机会非常高,系统的性能可能难以达到预期的目标。 为了实现隔离性与系统性能之间的平衡,SQL99定义了四种隔离级别,允许应用根据实际需要选择合适的隔离级别馑闹指衾爰侗鸬暮迦缦拢?nbsp;

        读"脏"数据         不可重复读         "幻象"读
未提交读READ UNCOMMITTED         N         N         N
提交读READ COMMITTED         Y         N         N
可重复读REPEATABLE READ         Y         Y         N
可串行SERIALIZABLE         Y         Y         Y

其中"N"表示在这种隔离级别下,对应的现象不可避免,而"Y"则 表示可以避免。

2、 事务语句


START TRANSACTION

开始一个事务,如果已存在一个事务,会先立即commit.另外,autocommit属性会被设为0,直到事务结束

COMMIT

提交所有数据,释放锁

ROLLBACK

回滚事务

SAVEPOINT savepoint_name

设点存盘点

ROLLBACK TO SAVEPOINT savepoint_name

回滚至savepoint_name

SET TRANSACTION

设置隔离级别(SET TRANSACTION ISOLATION LEVEL)

LOCK TABLES

锁定表,此操作会导致当前打开的事务立即开关闭,所以应在此之前,执行commit或rollback


3、 定义事务

要开启事务处理,有如下两个方法:
a、 将autocommit设为0
b、 使用START TRANACTION语句(建议使用)

注:以下语句会导致即时commit当前事务
ALTER FUNCTION ALTER PROCEDURE ALTER TABLE
BEGIN CREATE DATABASE CREATE FUNCTION
CREATE INDEX CREATE PROCEDURE CREATE TABLE
DROP DATABASE DROP FUNCTION DROP INDEX
DROP PROCEDURE DROP TABLE UNLOCK TABLES
LOAD MASTER DATA LOCK TABLES RENAME TABLE
trUNCATE TABLE SET AUTOCOMMIT=1 START TRANSACTION




http://www.okpython.com
让中国的python发展的更快。
2007-11-22 01:24 PM#1
查看资料  访问主页  Blog  发短消息  QQ  顶部
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 




Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.021093 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP