中国建设银行青岛分行网站,哪些网站平台可以做推广,女生初中毕业最吃香的专业,阿里邮箱登录入口1.什么是数据库事务#xff1f;
就是把好几个sql语句打包成一个整体执行#xff0c;要么全部成功#xff0c;要么全部失败#xff01;#xff01;#xff01;
事务是一个不可分割的数据库操作序列#xff0c;也是数据库并发控制的基本单位#xff0c;其执 行的结果必…1.什么是数据库事务
就是把好几个sql语句打包成一个整体执行要么全部成功要么全部失败
事务是一个不可分割的数据库操作序列也是数据库并发控制的基本单位其执 行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上 的一组操作要么都执行要么都不执行。 事务最经典也经常被拿出来说例子就是转账了。 假如小明要给小红转账1000元这个转账会涉及到两个关键操作就是将小明 的余额减少1000元将小红的余额增加1000元。万一在这两个操作之间突然出 现错误比如银行系统崩溃导致小明余额减少而小红的余额没有增加这样就不 对了。事务就是保证这两个关键操作要么都成功要么都要失败。
2.事务的特性
事物的四大特性(ACID)? 关系性数据库需要遵循ACID规则具体内容如下
原子性atomicity 事务是最小的执行单位不允许分割。事务的原子性确保动作 要么全部完成要么完全不起作用一致性consistence 执行事务前后数据保持一致多个事务对同一个数据读取的 结果是相同的隔离性isolation 并发访问数据库时一个用户的事务不被其他事务所干扰各 并发事务之间数据库是独立的持久性durable 一个事务被提交之后。它对数据库中数据的改变是持久的即 使数据库发生故障也不应该对其有任何影响。
3.事务的状态
活动的部分提交的失败的中止的提交的 4. 如何使用事务 SQL语句的执行原理 InnoDB 存储引擎先以页为单位将数据从磁盘的页上加载到内存的Buffer Pool中再对进行数据进行增删改查处理处理完之后commit就会将数据从内存刷新到磁盘中进行持久化 如果在内存处理数据时出现异常就会回滚rollback,不将数据从内存中刷新到磁盘中。 begin: 开启一个事务开启之后不会默认提交【除隐式事务外】需要手动提交否则不会刷新到磁盘。 commit: 结束当前事务刷新到磁盘进行持久化。当前begin没有commit又开启一个begin会自动commit。 rollback: 回滚将内存中的数据恢复到上一次commit之后。
使用begin开启一个事务commit结束事务未commit之前都是在内存中运行commit之后就会刷新到磁盘进行持久化。未commit之前可以使用rollback回滚就不会刷新到磁盘。如果已经commit刷新到磁盘则无法回滚。回滚是回滚到上一次commit。 mysql事务会默认提交一个SQL语句就是一个单独的事务自己可以设置默认不提交自己控制事务。
BEGINUPDATE book1 SET num 1000 WHERE id 1;COMMIT这里是引用 查看自动提交变量
SHOW variables like autocommit;设置系统不自动提交
SET autocommit false;对DML语言有效对DDL无效DDL会自动提交
4.1 显式事务
自己手动BEGINCOMMIT。开启事务不自动提交
BEGINUPDATE book1 SET num 1000 WHERE id 1;COMMIT4.2 隐式事务
隐式事务会自动提交无法回滚
-DDL
隐式使用或修改mysql数据库中的表 当我们使用 ALTER USER、CREATE USER 、DROP USER 、GRANTRENAME USER 、REVOKE 、SETPASSWORD 等语句时也会隐式的提交前边语句所属于的事务。
事务控制或关于锁定的语句
当我们在一个事务还没提交或者回滚时就又使用 START TRANSACTION 或者BEGIN 语开启了另一个事务时会 隐式的提交 上一个事务。当前的 autocommit 系统变量的值为 OFF我们手动把它调为 ON 时也会 隐式的提交 前边语句所属的事务。使用LOCK TABLES、UNLOCK TABLES 等关于锁定的语句也会 隐式的提交前边语句所属的事务
加载数据的语句 使用 LOAD DATA 语句来批量往数据库中导入数据时也会 隐式的提交 前边语句所属的事务
关于MySQL复制的一些语句
使用START SLAVE、STOP SLAVE、RESET SLAVE、CHANGE MASTER TO 等语时会隐式的提交 前边语所属的事务。
其它的一些语句
使用ANALYZE TABLE、CACHE INDEX、 CHECK TABLE、FLUSH、 LOAD INDEX INTO CACHE、OPTIMIZE TABLE、REPAIR TABLE等
5. 事务的常见分类
6. savepoint 的使用 -- 开始一个事务
BEGINUPDATE book1 SET num 23 WHERE id 1;SAVEPOINT s1;#设置保存点UPDATE book1 SET num 423 WHERE id 1;ROLLBACK TO s2; #回滚到保存点