1,postgresql 的实现事务的形式,是通过锁外加版本控制(在共享数据之中)来实现的。比如,事务的读操作是读取共享数据的版本,更新数据(体现了锁的概念,保证更新准确),在共享数据之中新生成一个版本.
2,postgresql 原子性是记录日志进行保证的,postgresql 的隔离性是通过 mvcc(版本并发控制) 来进行保证的,postgresql 的持久性是指的是保存到硬盘至上
3,postgresql 多进程形式,MySQL是多线程
多进程结构简单,更加健壮一个进程的崩溃不会导致另一个进程崩溃。
多进程之间的通讯是共享内存的方式进行通讯。代码书写简单
多线程线程库比较复杂的一种。
4,postgresql 更新数据操作
1,更新内存数据
2,写入内存日志(同步的),只有日志写入到磁盘才会返回数据到用户。
3,提交,写系统cache (io 操作)
4,同步数据到磁盘
5,后台写数据,写完数据,更新检查点。
6,同步数据到磁盘
5,postgresql 里面的表空间指的是一个磁盘目录
6,多版本并发控制,MVCC)一位置每个 SQL 语句看到的都只是一小段时间之前的数据快照(一个数据库版本),而不管底层数据的当前状态。这样可以保护语句不会看到可能由其他在相同数据行上执行更新的并发事务造成的不一致数据,为每一个数据库会话提供事务隔离