DML :
DELETE
INSERT INTO
UPDATE
與查詢操作有關
INSERT INTO tb_name (col1,col2,...) VALUES (val1,val2,...)[,(val1,val2,...)]
字符型 :單引號
數值型 :不需要引號
日期時間型
空值 :NULL
REPLACE INTO 替換 用法相同
DELETE :
DELETE FROM tb_name WHERE condition;
truncate tb_name 清空表並重置AUTOINCREMEN計數器;
UPDATE tb_name SET col1=...,col2=... WHERE
MYSQL 機制 :
連接管理器:
接受請求
創建線程
認證用戶
建立安全連接
併發控制 :
mbox : MDA
多版本併發控制 :MVCC 操作某個時間的快照
鎖 :
讀鎖 :共享鎖
寫鎖 :獨佔鎖
LOCK TABLES tb_name lock_type(read|write);
UNLOCK TABLES 解除所有表的鎖
鎖粒度:從大到小 ,MySQL服務器僅支持表級鎖,行鎖需要由存儲引擎完成
表鎖
頁鎖
行鎖
事務 :
RDBMS :ACID(原子性、一致性、隔離性、持久性)
事務日誌 :
重做日誌
redo log
撤消日誌
undo log
隔離級別 :
READ-UNCOMMITRED 讀未提交
READ-COMMITTED 讀提交
REPATABLE READ 可重讀
SERIABLEZABLE 可串行
多事務同時執行 :彼此之間互不影響的方式進行並行;
事務之間交互
通過數據集
ACID
Automicity 原子性,事務所引起的數據庫操作,要麼都完成,要麼都不執行;
Consistency 一致性,執行前後數據庫整體狀態沒有改變(隔離)
Isolation 隔離性 事務調度,事務之間影響最小 MVCC多版本併發控制
Durability 持久性,一旦事務成功完成,系統必須保證任何故障都不會引起事務表示出不一致性;
1、事務提交之前就已經寫出數據至持久性存儲;
2、結合事務日誌完成;
事務日誌產生順序IO
數據文件產生隨機IO
事務的狀態 :
活動的 :active
部分提交的 :最後一條語句執行後
失敗的
中止的
提交的
狀態轉換過程 :
事務 :允許併發執行
1、提高吞吐量和資源利用率
2、減少等待時間
事務調度 :
可恢復調度 :
無級聯調度 :
SQL ,ODBC
START TANSACTION : 啓動
COMMIT :提交
ROLLBACK :回滾
併發控制依賴的技術手段 :
鎖
時間戳
多版本和快照隔離
鎖餓死
死鎖
如果沒有明確啓動事務 :
autocommit :能實現自動提交,每一個操作都直接提交;
建議,明確使用事務,並且關閉自動提交
保存點 :SAVEPOINT SID
回滾至保存點 :ROLLBACK TO SID