#### 事務
> 一個邏輯單元一組操作,要么全部執行,要么全部不執行
#### 流程控制
- begin transaction
- commit
- rollback
#### 事務四個特性
- 原子性(Atomicity): 一個事務中的所有操作要么全部執行,要么全部不執行
- 一致性(Consistency): 事務前后的數據完整性必須保持一致性
- 隔離性(Isolation): 多個事務獨立,不相互影響
- 持久性(Durability): 事務提交將保存到數據庫
#### 事務并發問題:
- 臟讀: a事務讀取到了b事務未提交的數據
- 不可重復讀: a事務同一條sql語句兩次查詢結果不一致
- 歡讀: a事務中,兩次讀取的數據量不一致
#### 事務隔離級別:
mysql默認隔離為可重復讀
- 未提交讀(read uncommitted),出現臟讀
- 提交讀(read committed),出現不可重復讀
- 可重復讀(repeatable read),出現幻讀
- 串行化(serializable)
安全性: ru < rc < rr < s
性能: ru > rc > rr > s
#### 代碼:
```php
$dsn = 'mysql:dbname=met;host=localhost';
$pdo = new PDO($dsn, 'root', '');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
$pdo->beginTransaction();
$sql2 = "insert into swoole(`name`,`age`) values('roob',23)";
echo $pdo->exec($sql2) ? 'yes' : 'no';
echo "\n";
$pdo->commit();
} catch (Exception $e) {
echo $e->getMessage() . "\n";
$pdo->rollBack();
}
```
- php
- 編譯安裝
- 基本概念
- 垃圾回收機制
- 生命周期
- zval底層實現
- c擴展開發
- gdb調試工具
- 自定義擴展簡單demo
- 鉤子函數
- 讀取php.ini配置
- 數組
- 函數
- 類
- yaf擴展底層源碼
- swoole擴展底層源碼
- memoryGlobal內存池
- swoole協程使用記錄
- 單點登錄sso原理
- compser使用
- session實現機制
- c & linux
- gcc
- 指針
- 結構體,聯合和位字段
- 宏定義井號說明
- printf家族函數和可變參數
- 共享函數
- 靜態庫和動態庫
- makefile自動化構建
- 信號一
- 信號二
- inotify監控文件事件
- socket編程
- 簡介
- UNIX DOMAIN
- Internet DOMAIN
- TCP/IP
- 文件IO多路復用
- 內存管理
- 進程組,會話和控制終端
- daemon守護進程
- 多進程
- 多線程
- 常用進制轉換
- go
- 入門知識
- 字節和整數裝換
- python
- redis
- 應用場景
- 消息隊列
- 熱點數據
- 掃碼登錄
- 訂閱發布
- 次數限制
- 搶購超賣
- 持久化機制
- mysql
- 工作流程
- MyISAM和InnoDB區別
- 用戶和權限管理
- 執行計劃
- sql優化
- 事務和鎖
- 慢查詢日志
- case...when...then...end用法
- sql
- 參考
- linux
- 內核參數優化
- 防火墻設置
- docker
- docker入門知識
- 算法
- 多維數組合
- DFA算法
- 紅包金額分配