15 23資料庫(23) MySQL事務

2021-08-27 02:56:05 字數 663 閱讀 3011

備註:所有查詢基於前面章節建立的校園資料庫

-- 事務tranaction(tx)

-- 開啟事務

begin;

-- 課程表插入「把妹」學科

insert

into course(name) values('**');

-- 教師表插入一位把妹名師

insert

into teacher(name,gender,courseid)

values(

'西門程程',

1,(select id from course where name='**')

);-- 班級表插入bjbamei01班級資訊

insert

into clazz(name) values('bjyuepao01');

-- 插入學生選課資訊

insert

into student_course(sid,cid) values(

(select id from student where name='隔壁老王'),

(select id from course where name='**')

);-- 提交事務/回滾事務

-- commit;

rollback;

2 3 mysql儲存 CSV插入資料

上一節,我們大致過了一些mysql儲存引擎為csv型別的table檔案是如何儲存的。那麼這一節,我們來看看一條insert語句是如何執行的,並且落到csv檔案中的。看了很多現在網上的原始碼分析,都是發現5.x與8.0 上差距還是挺大的。mysql insert into user1 values 1...

23 MySQL是怎麼保證資料不丟的?

只要保證redo log和binlog持久化到磁碟,就能確保mysql異常重啟後資料可以恢復。binlog的寫入邏輯比較簡單 事務執行過程中,先把日誌寫到binlog cache,事務提交的時候,再把binlog cache寫到binlog檔案中。系統給binlog cache分配了一片記憶體,每個...

23 MySQL是怎麼保證資料不丟的?

其實,binlog 的寫入邏輯比較簡單 事務執行過程中,先把日誌寫到 binlog cache,事務提交的時候,再把 binlog cache 寫到 binlog 檔案中。乙個事務的 binlog 是不能被拆開的,因此不論這個事務多大,也要確保一次性寫入。這就涉及到了 binlog cache 的儲...