面试题答案
一键面试- innodb_flush_log_at_trx_commit = 0
- 策略阐述:每秒将log buffer中的日志写入log file,并将log file刷盘。事务提交时,不会触发日志写入和刷盘操作。
- 性能影响:性能最高,因为事务提交时无需等待日志写入和刷盘,减少了I/O操作,提高了事务处理速度。
- 数据安全影响:数据安全性最低,如果系统崩溃,可能会丢失1秒内的事务日志,导致这1秒内的事务数据丢失。
- innodb_flush_log_at_trx_commit = 1
- 策略阐述:每次事务提交时,将log buffer中的日志写入log file,并将log file刷盘。这确保了事务提交时,日志已持久化到磁盘。
- 性能影响:性能最低,因为每次事务提交都要进行日志写入和刷盘操作,I/O开销较大,限制了事务处理的并发能力。
- 数据安全影响:数据安全性最高,即使系统崩溃,由于事务提交时日志已刷盘,不会丢失已提交事务的数据。
- innodb_flush_log_at_trx_commit = 2
- 策略阐述:每次事务提交时,将log buffer中的日志写入log file,但log file刷盘操作每秒执行一次。
- 性能影响:性能介于0和1之间,事务提交时只需进行日志写入,无需等待刷盘,减少了I/O等待时间,但仍有一定I/O开销。
- 数据安全影响:数据安全性较高,系统崩溃时,最多丢失1秒内已提交事务的日志数据,因为日志写入了但可能未刷盘。