在mysql中,事务是由单独单元的一条或多条sql语句组成。
事务的特性原子性
孤立性
持久性
MySQL事务的创建和存在周期
创建事务的过程:
初始化事务、创建事务、应用select语句查询数据是否被录用、提交事务
用户需要创建一个innodb或者bdb类型的数据表
create table table_name(field_defintions) type= innodb/bdb;
当用户希望将已经存在的表支持事务处理,则用户可以应用alter table命令
alter table table_name type=innodb/bdb;
1、初始化事务
start transaction;
2、创建事务
初始化事物成功后,可以创建事物。向名称为connection的数据表中插入一条记录为例。
打开数据库 --选择某个数据库---初始化事物----创建事物---向指定的数据表中添加纪录
mysql -uroot -p密码
use db_database16;
start transaction;
insert into connection(email,cellphone,QQ,sid) values('barrystephen@126.com',13456000000,187034000,3);
3、应用select语句查询数据是否被正确录入
事务创建成功后,应通过select语句查询数据是否被正确录入
select * from connection where sid=3;
4、提交事务
当且仅当用户成功提交事物后,其他用户才能通过select语句查询事务结果
conmmit;
5、撤销事物
又称事务回滚
命令:
rollback
执行一个回滚操作,则在输入start transaction命令后的所有sql语句都将执行回滚操作。未提交的事务,默认自动回滚状态
6、事务的存在周期
从输入start transaction指令开始直到用户输入commit结束。
事务不支持嵌套功能,当用户在未结束第一个事务又重新打开一个事务时,则一个事务会自动提交。
7、mysql事务行为
存在两个控制行为的变量,autocommit 、transaction isolaction level
自动提交
用户可以通过控制mysql自动提交参数,可以更改提交模式
通过命令关闭自动提交参数
set autocommit=0;
8、事务的孤立级
序列化:serializable
可重读:repeatable read
提交后读:read committed
未提交读:read uncommitted
9、修改事务的孤立级
修改事物的独立级
transaction isolation level
可以使用select命令获取当前事务孤立级变量的值
select @@tx_isolation;
设置孤立级
set global transaction isolation level read committed;
10、事务的性能
11、MySQL伪事务
用表锁定代替事务
MyISAM类型表不支持commit和rollback
1、为指定数据表添加锁定
lock table table_name lock_type,...
2、用户执行数据表的操作,可以添加、删除或者更改部分数据‘
3、用户完成对锁定数据表的操作后,需要对该表进行解锁操作,释放该表的锁定状态
unlock tables;
以读方式锁定数据表
lock table studentinfo read;
unlock tables;insert into studentinfo (name,age,sex,tel) values('larrybird','29','M',19876543214);
以写方式锁定数据表
lock table studentinfo write;
12、应用表锁实现伪事务
1、对数据库的数据表进行锁定操作
lock table table_name1 lock_type1,table_name2 lock_type2,...
2、执行数据库操作,向锁定的数据表中执行添加、删除、修改等操作。
3、释放锁定的数据表