进程和显存管理

当一个顾客端联接到PostgreSQL服务器时,服务器会为其创建一个单独的进程。这个进程拥有自己的私有显存空间,并与服务器的共享显存交互,共享显存用于缓存数据、管理锁和进行进程间通讯。这些设计隔离了用户会话,提高了稳定性。

SQL查询处理

当服务器接收到顾客端发送的SQL查询时,查询首先被解析器解析成解析树,之后由重画器按照规则进行更改。以后,优化器评估多种可能的执行计划并选择成本最低的一个。最后,执行器运行执行计划,访问或更改数据linux系统应用,并将结果返回给顾客端。

为了加速查询,PostgreSQL使用索引,一般是B-Tree,但也支持哈希、GiST、GIN和BRIN等索引类型。索引容许数据库快速定位到表中的特定记录,而不须要扫描整个表。

储存与文件系统

PostgreSQL将数据储存在文件系统中,每位数据库对应一个目录,每位表一般对应一组文件。它使用一种名为“主-子文件”的机制,其中一个大表可能由多个子文件组成。PostgreSQL管理这种文件,确保数据的读取和写入根据ACID原则进行。

事务管理

PostgreSQL进程内存管理_SQL查询处理优化器执行计划_linux 启动postgresql

PostgreSQL通过多版本并发控制(MVCC)机制管理事务。在MVCC中linux 启动postgresql,数据的每次修改还会创建一个新版本linux查看进程,因而允许多个事务同时对同一数据进行读写操作而不相互干扰,降低了并发性能并降低了锁的使用。

读写操作

当执行写入(INSERT、UPDATE、DELETE)操作时,PostgreSQL先写入到WAL(Write-AheadLogging,预写日志)中。WAL确保在系统故障时可以恢复数据库到一致状态。数据随即被写入到表的文件中,但可能首先在共享显存的缓冲区中进行缓存。读取(SELECT)操作首先检测共享显存的缓冲区是否已有所需数据,假如没有,则从c盘读取数据到缓冲区。因为MVCClinux 启动postgresql,读取操作可以获取数据的合适版本,不受正在进行的写入操作影响。

PostgreSQL与MySQL的区别?

PostgreSQL是一种先进的开源对象关系型数据库,它提供了广泛的数据类型、强大的数据完整性和扩充性功能,非常适宜于复杂的企业级应用和大数据解决方案。MySQL是一款流行的开源关系型数据库管理系统,以其高性能、易用性和强悍的社区支持而广泛应用于网页应用和小至小型项目。下表简单对比了PostgreSQL和MySQL的区别:

特点

PostgreSQL

MySQL

类型

SQL查询处理优化器执行计划_linux 启动postgresql_PostgreSQL进程内存管理

开源对象关系型数据库管理系统

开源关系型数据库管理系统

设计重点

中级功能、复杂查询、大型事务处理

Web应用、轻量级操作、快速开发和布署

性能

在处理复杂的查询和大量数据方面表现更佳

linux 启动postgresql_PostgreSQL进程内存管理_SQL查询处理优化器执行计划

对读操作和简单写操作有优化,非常是在Web和嵌入式应用中高效

储存引擎

一个统一的储存引擎,全面支持事务、索引等中级特点

提供多种储存引擎,如InnoDB(支持事务)和MyISAM(不支持事务)

功能

包括更多先进特点,比如表承继、函数索引、材化视图等

提供基本的数据库功能和高效的复制机制

可扩充性

SQL查询处理优化器执行计划_PostgreSQL进程内存管理_linux 启动postgresql

强悍的可扩充性,支持用户定义类型、函数、操作符和聚合函数

支持读写分离和水平扩充,但对个别复杂扩充场景的支持较弱

社区和支持

以其专业性和技术深度闻名,拥有一个对企业级特点和复杂问题解决更专注的社区

拥有一个庞大且以Web开发为主导的用户社区和广泛的商业支持

默认字符集排序

默认大小写敏感

linux 启动postgresql_PostgreSQL进程内存管理_SQL查询处理优化器执行计划

默认大小写不敏感(可以配置)

适用场景

广泛用于要求高度可靠性和数据完整性的企业级应用

广泛用于小到小型网站和应用

阿里云怎么满足您的PostgreSQL需求?相关产品最佳实践

Tagged:
Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复