備註:所有查詢基於前面章節建立的校園資料庫
-- 事務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 的儲...