默认是 RR 历史原因,如果没有项目使用,直接改 RC
Serializable,串行性能太低不用
RU 读未提交,保证不了一致性不用
| 隔离级别与读异常 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交 | 可能 | 可能 | 可能 |
| 读已提交 | 不可能 | 可能 | 可能 |
| 可重复读 | 不可能 | 不可能 | 不可能(理论上可能) |
| 如果手动 select for update,强制当前读就出现了 | |||
| 串行化 | 不可能 | 不可能 | 不可能 |
| 参数 | 作用 | 具体值 | 关注点 |
|---|---|---|---|
| innodb_flush_log_at_trx_commit | MySQL InnoDB 引擎redo log的刷盘时机 | 0/2 | 性能 |
| 1 | 数据不丢 | ||
| sync_binlog | MySQL binlog的刷盘时机 | N(N>1,表示每多少个事务刷新一次) | 性能 |
| 1 | 数据不丢 | ||
| transaction-isolation | 调整隔离级别 | TRANSACTION_READ_UNCOMMITTED | 读未提交 |
| TRANSACTION_READ_COMMITTED | 读已提交 | ||
| TRANSACTION_REPEATABLE_READ | 可重复读 | ||
| TRANSACTION_SERIALIZABLE | 串行化 |