PostgreSQL之总体架构
pg内存分析一书的图画得已经很好了,没有必要重新画一个,直接截图上了。可以看到,整体上可以分为两部分:
- 前端部分,主要是psql以及其他接口的访问应用程序,通过libpq协议来连接后端部分;
- 后端部分,向前端部分提供数据库的SQL功能;
- SQL引擎,主要分为编译器、优化器和执行器三部分;
- 存储引擎,主要提供内存管理、索引管理和数据(磁盘)管理三部分;
- 事务管理,主要提供事务功能;
- 数据字典,主要是系统表这一部分来提供;
存储这部分还是有垂直层次的,把书上的图进行了小小改良。可以看出,存储引擎部分主要包括内存部分和外存部分,其中
- 内存部分主要包括了共享内存和本地内存两部分
- 共享内存部分又可以按照功能分为两部分,用于进程间通信的共享内存(像IPC、共享锁、失效消息队列),用于进程间共享数据的共享缓存区(像shared buffer、clog/subtrans的slru等);
- 本地内存主要包括了Cache(本地高速缓存)、事务管理相关以及内存上下文。
- 外存部分主要是垂直层次上的存储管理器、虚拟文件句柄以及存储文件。