mysql+永久+关闭提交,MySQL学习【第十一篇存储引擎之事务解释】
一.innodb的核心特點------事務
1.什么是事務
在一組數據操作執行步驟,這些步驟被視為一個單元,主要針對dml語句(update、delete、insert)
2.事務ACID特性
Atomic(原子性)
所有語句作為一個單元全部成功執行或全部取消。
Consistent(一致性)
如果數據庫在事務開始時處于一致狀態,則在執行該。?事務期間將保留一致狀態。
Isolated(隔離性)
事務之間不相互影響。
Durable(持久性)
事務成功完成后,所做的所有更改都會準確地記錄在?數據庫中。所做的更改不會丟失。
3.事務的控制語句
START TRANSACTION(或 BEGIN):顯式開始一個新事務
SAVEPOINT:分配事務過程中的一個位置,以供將來引用
COMMIT:永久記錄當前事務所做的更改
ROLLBACK:取消當前事務所做的更改
ROLLBACK TO SAVEPOINT:取消在 savepoint 之后執行的更改
RELEASE SAVEPOINT:刪除 savepoint 標識符
SET AUTOCOMMIT:為當前連接禁用或啟用默認 autocommit 模式
4.事務演示
成功事務
mysql>begin;
mysql> insert into stu(id,name,sex,money) values(1,'zhang3','m',100), (2,'zhang4','m',110);
mysql>commit;
事務回滾
mysql>begin;
mysql> update stu set name='zhang3';
mysql> delete fromstu;
mysql> rollback;
6.事務自動提交
#查看自動提交
mysql> show variables like 'autocommit';
#臨時關閉
mysql> set autocommit=0;
#永久關閉
[root@db01 world]# vim/etc/my.cnf
[mysqld]
autocommit=0
5.事務隱式提交情況
a)現在版本在開啟事務時,不需要手工begin,只要你輸入的是DML語句,就會自動開啟事務。
b)有些情況下事務會被隱式提交
如下:
在事務運行期間,手工執行begin的時候會自動提交上個事務
在事務運行期間,加入DDL、DCL操作會自動提交上個事務
在事務運行期間,執行鎖定語句(lock tables、unlock tables)
load data infile
select for update
在autocommit=1的時候
7.事務日志redo基本功能
a( redo是什么
redo,顧名思義“重做日志”,是事務日志的一種。
b( 作用是什么
在事務ACID過程中,實現的是“D”持久化的作用。
特性:WAL(Write Ahead Log)日志優先寫
REDO:記錄的是,內存數據頁的變化過程
8.redo的工作過程
執行步驟
update t1 set num=2 where num=1;
a)首先將t1表中num=1的行所在數據頁加載到內存中buffer page
b)MySQL實例在內存中將num=1的數據頁改成num=2
c)num=1變成num=2的變化過程會記錄到,redo內存區域,也就是redo buffer page中
提交事務執行步驟
commit;
a)當敲下commit命令的瞬間,MySQL會將redo buffer page寫入磁盤區域redo log
b)當寫入成功之后,commit返回ok
9.事務日志undo
a( ? ?undo 是什么?
undo,顧名思義“回滾日志”,是事務日志的一種。
b( ? ?作用是什么?
在事務ACID過程中,實現的是“A”原子性的作用。當然CI的特性也和undo有關
10.redo和undo的存儲位置
#redo位置
[root@db01 data]# ll/application/mysql/data/
-rw-rw---- 1 mysql mysql 50331648 Aug 15 06:34ib_logfile0-rw-rw---- 1 mysql mysql 50331648 Mar 6 2017ib_logfile1
#undo位置
[root@db01 data]# ll/application/mysql/data/
-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34ibdata1-rw-rw---- 1 mysql mysql 79691776 Aug 15 06:34 ibdata2
總結
以上是生活随笔為你收集整理的mysql+永久+关闭提交,MySQL学习【第十一篇存储引擎之事务解释】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php中可以实现多态的是继承,PHP设计
- 下一篇: python批量生成,用python批量