Heim  >  Artikel  >  Datenbank  >  MySQL学习笔记5-MySQL事物_MySQL

MySQL学习笔记5-MySQL事物_MySQL

WBOY
WBOYOriginal
2016-06-01 13:26:221040Durchsuche

bitsCN.com

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; 应用表锁实现伪事物

bitsCN.com
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn