在读+写
不是一个原子操作的时候,为了提高处理速度而引入的并发访问会使得一些读写操作的结果不符合预期。由于数据库读取数据时的最小粒度是数据页,在修改的时候是操作数据页,因此
从数据库在内存中的存储来看,最容易想到的一个做法是为整份数据块做一份冗余,在
为了解决两个不同的并发连接操作引发的读和写之间的冲突,引入锁(互斥锁)的概念将访问的数据集合锁住,避免被其他连接读或者写。但如果两个连接都只是读数据就不会引起数据变更,然而读和读之间的互斥则会降低访问效率,因此引入了不同的锁(共享锁)使得读和读之间的锁可以兼容从而提高并发读效率。
然而当一个操作涉及写的时候,很有可能是基于原先数据做变更。
通过事务把多个操作组合为一个整体,通过保证事务的原子性来确保多个数据库操作的原子性。