#### 事务
> 一个逻辑单元一组操作,要么全部执行,要么全部不执行
#### 流程控制
- 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算法
- 红包金额分配