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