和数据库打交道的程序员绕不开的话题就是:事务,作为一个简化访问数据库的应用程序的编程模型.通过使用事务,应用程序可以忽略某些潜在的错误场景和并发问题,由数据库负责处理它们.而并非每个应用程序都需要事务,有时削弱事务性担保或完全放弃事务,可以获得更高的性能或更高的可用性.怎么样更好的理解数据库中的事务与隔离级别呢?我们借这篇文章来聊一聊吧~ 1.ACID 1983年,Andreas Reuter and Theo Härder 提出了事务之中重要的四个特性: 原子性(Atomicity): 一般来
sync_binlog:是MySQL 的二进制日志(binary log)同步到磁盘的频率(刷新二进制日志到磁盘),默认是0,意味着mysql并不刷新,由操作系统自己决定什么时候刷新缓存到持久化设置,如果这个值比0大,它指定了两次刷新到磁盘的动作之间间隔多少次二进制日志写操作. sync_binlog= or N sync_binlog=0,当事务提交之后,MySQL不做fsync之类的磁盘同步指令刷新binlog_cache中的信息到磁盘,而让Filesystem自行决定什么时候来做同步,或者
这一章看起来是讲存储引擎的.作者抱怨数据库被黑为“monolithic”.不可拆分为可复用的组件:但是实际上除了事务存储引擎管理模块,其他模块入解析器.重写引擎.优化器.执行器.访问方式都是代码相对独立的,他们提供窄接口(宽接口功能强大如Socket,窄接口单一职责入TcpListener)给其他模块调用.存储引擎一般有以下四个深深纠缠的组件:1. A lock manager,并发控制2. A log manager,恢复3. A buffer pool,数据库I/O分段处理4. Access