网站地图    收藏   

主页 > 后端 > mysql数据库 >

MySQL学习笔记5-MySQL事物 - mysql数据库栏目 - 自学

来源:自学PHP网    时间:2015-04-16 10:51 作者: 阅读:

[导读] MySQL事物ACID指出每个事物型RDBMS必须遵守4个属性,及原子性、一致性、孤立性和持久性。通过InnoDB和BDB类型表,MySQL事物能够完全满足事物安全的ACID测试,但不是所有类型都支持事物,...

MySQL事物 ACID指出每个事物型RDBMS必须遵守4个属性,及原子性、一致性、孤立性和持久性。通过InnoDB和BDB类型表,MySQL事物能够完全满足事物安全的ACID测试,但不是所有类型都支持事物,如MyISAM类型表就不能支持事物,只能通过伪事物对表实现事物处理。

默认情况下InnoDB表持久性最长,MyISAM表提供部分持久。 MySQL事物的创建与存在周期 如果用户想让数据表支持事物处理能力,必须将当前操作数据表的类型设置为InnoDB或BDB。创建InnoDB或BDB类型的数据表,基本命令结构:

CREATE TABLE table_name(field-defintions) TYPE = INNODEB/BDB;

更改数据表类型:

ALTER TABLE table_name TYPE = INNODB/BDB;

注意:应用ALTER TABLE操作肯能会导致数据库中数据丢失,因此为了避免非预期结果出现,在使用该命令之前,用户需要创建一个表备份。创建事物的一般过程: 初始化事物

START TRANSACTION;创建事物

应用SELECT语句查看数据是否被正确输入提交事物

COMMIT撤销事物ROLLBACK1

如果执行一个回滚操作,则在START TRANSACTION命令后的所有SQL语句都将执行回滚操作。如果开启事物后,没有提交事物,则事物默认为自动回滚状态,即不保存用户之前的任何操作。事物的存在周期

事物不支持嵌套功能,当用户第一个事物未结束又开始第二个事物时,则前一个事物会自动提交,同样MySQL中很多命令都会隐藏执行COMMIT 命令。 MySQL行为 自动提交控制MySQL自动提交参数,可以通过AUTOCOMMIT变量更改提交模式

SET AUTOCOMMIT=0;

只有当用户输入COMMIT命令后,MySQL才将数据表中的资料提交到数据库中,如果不提交事物,而终止MySQL会话,数据库将会自动执行回滚操作。

通过 select @@autocommit; 变量来查看当前自动提交状态事物的孤立级

SERIALIZABLE(序列化)

REPEATABLE READ (可重读性)

READ COMMITTED (提交后读)

READ UNCOMMITTED(未提交读) 获取当前事物孤立级别的命令:

SELECT @@tx_isolation;修改事物的孤立级

set global transaction isolation level 孤立级;

如果用户要想修改事物的孤立级,必须首先获取SUPER优先权,以便用户可以顺利执行修改操作。 事物和性能 应用小事物选择合适的孤立级避免死锁 MySQL伪事物 用表锁定代替事物 为指定数据表添加锁定

LOCK TABLES table_name lock_type,...用户执行数据表的操作,可以添加、删除或者更新部分数据。解锁

UNLOCK TALBES; 应用表锁实现伪事物

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论