关于postgersql相关技术栈的总结

我们类比mysql

1.架构部署层面

2.创建库,选择引擎

3.sql语法层面

3.1创建表阶段

数据类型的不同

3.2创建索引,主键

3.3 crud阶段的语法不同

🏛️ 1. 架构部署层面

对比项 MySQL PostgreSQL SQLite MariaDB
架构模式 客户端-服务器 (C/S) 服务器监听端口接收客户端请求。 客户端-服务器 (C/S) 类似MySQL,但采用进程模型,每个连接会启动一个后端进程。 嵌入式 (Embedded) 无服务器架构,直接集成到应用中。 客户端-服务器 (C/S) 与 MySQL 基本相同,可看作其"增强版"。
数据存储 数据存储在服务器管理的多个文件中。 类似 MySQL。 单文件 ,所有数据(表、索引等)存放在一个 .db 文件中。 同 MySQL。
部署与资源 需要安装、配置、启动服务,资源占用较高。 部署步骤与 MySQL 类似,但优化配置不同。 零配置、开箱即用,库文件大小约 600KB-2MB,资源占用极低。 与 MySQL 高度相似,通常可无缝替换。
适用场景 通用Web应用、高并发OLTP、中小型系统、读写分离架构。 企业级应用、复杂数据分析,数据完整性和SQL标准要求高的场景。 移动应用、桌面软件、IoT设备,嵌入式设备和低并发场景。 同 MySQL,适合希望使用 MySQL 但又担心闭源风险 、追求更多开源特性的用户。

⚙️ 2. 创建库,选择引擎

对比项 MySQL PostgreSQL SQLite MariaDB
核心设计 插件式存储引擎架构 一体化架构 + 丰富扩展机制 嵌入式、零配置 同 MySQL,但增强/新增了多种存储引擎
存储引擎 InnoDB (默认) ,支持事务、行级锁、外键 。 另有 MyISAM (无事务,读多写少)、MEMORY 等。 统一存储引擎,所有功能集中优化,无插件引擎概念。 单一存储引擎,无引擎可选概念。 除 MySQL 支持的引擎外,还有: Aria (MyISAM的增强版,更稳定)。 ColumnStore (列式存储,适用OLAP)。 MyRocks (基于RocksDB,高压缩比)。 支持同一张表使用不同引擎。

📝 3. SQL语法层面

3.1 常见数据类型对比
数据类型 MySQL PostgreSQL SQLite MariaDB
整数 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT SMALLINT, INTEGER, BIGINT 9†L20-L21 INTEGER (可自动识别类型) 与 MySQL 完全兼容
浮点数/精确数 FLOAT, DOUBLE, DECIMAL9†L21-L23 REAL, DOUBLE PRECISION, DECIMAL/NUMERIC9†L21-L23 REAL, NUMERIC20†L8 同 MySQL
字符串 CHAR, VARCHAR, TEXT (含 TINYTEXT, MEDIUMTEXT, LONGTEXT) CHAR, VARCHAR, TEXT 10†L27-L30 TEXT (无长度限制区分) 同 MySQL
布尔值 BOOLEAN/BOOL (实际是 TINYINT(1) 别名) 原生 BOOLEAN 类型 无原生类型 (通常用0/1) 同 MySQL
日期时间 DATE, TIME, DATETIME, TIMESTAMP, YEAR DATE, TIME, TIMESTAMP, TIMESTAMPTZ TEXT/INTEGER/REAL 同 MySQL
JSON MySQL 5.7+ 支持 JSON 类型,支持有限索引 支持 JSON 和高效的 JSONB (二进制) 类型,支持 GIN 索引高效检索 无原生支持 存储为 TEXT,无二进制 JSONB 类型
高级类型 有限支持 (无数组、UUID等) 支持 数组、UUID、HSTORE、网络地址、几何类型、范围类型等 不支持 基本与 MySQL 相同
3.2 创建索引与主键
索引维度 MySQL (InnoDB) PostgreSQL SQLite MariaDB
索引类型 B-Tree (默认), Hash , Full-Text , R-Tree (空间索引) B-Tree (默认), Hash, GIN, GiST, SP-GiST, BRIN B-Tree 5†L8 与 MySQL 类似,新增了更多索引算法的支持
主键实现 聚簇索引。数据和主键索引存储在一起,表本身就是索引组织表 堆表 + 二级索引。没有专门的"主键索引",所有索引都指向元组ID (TID) 与 PostgreSQL 类似,是一个隐藏的 ROWID 同 MySQL (InnoDB引擎)
函数/部分索引 8.0+ 支持函数索引;不支持部分索引 支持函数索引和部分索引 (带WHERE条件的索引) 不支持 8.0+ 支持函数索引;不支持部分索引
索引并发创建 不支持并发创建,会阻塞写操作 支持 CREATE INDEX CONCURRENTLY,不阻塞写操作 不支持 同 MySQL
3.3 CRUD语法差异
SQL操作 MySQL PostgreSQL SQLite MariaDB
字符串连接 CONCAT('Hello', 'World') `'Hello' 'World'`
分页查询 SELECT ... LIMIT offset, count 或 LIMIT count OFFSET offset SELECT ... LIMIT count OFFSET offset (标准语法) 同 PostgreSQL (推荐标准语法) 同 MySQL
自增列/序列 AUTO_INCREMENT,用 LAST_INSERT_ID() 获取最后ID SERIAL 或 IDENTITY,用 RETURNING 子句或 CURRVAL() 获取ID AUTOINCREMENT 关键字 同 MySQL,也支持 AUTO_INCREMENT
字符串引号 支持单引号 和双引号表示字符串 仅支持单引号表示字符串 仅支持单引号 同 MySQL
注释语法 # 单行注释 和 -- 单行注释 -- 单行注释 (需跟空格) 同 PostgreSQL 同 MySQL

相关推荐
天远Date Lab11 分钟前
零信任架构实战:基于天远学籍核验三要素构建自动化竞赛资格审查网关
运维·人工智能·架构·自动化
弈栈录1 小时前
Java 后端高并发设计:线程池、限流、熔断与降级
后端·架构
极派科技2 小时前
数据库写成功,MQ 消息却丢了?4 个故障窗口拆透 Transactional Outbox
架构
是希燃亚2 小时前
AI Agent 的未来,可能不是更强,而是更简单
算法·架构
AI小白Lin2 小时前
我的 Agent 迁移"成功"了:每道门都在册,没有一道能跑
架构·llm·agent
柚yuzumi2 小时前
React 19 Hooks 入门:函数组件的四大法宝 (useState / useEffect / useRef / useContext)
前端·javascript·架构
meiying88382 小时前
模板建站 vs 定制开发:从技术债、TCO 与可维护性算一笔工程账
架构·saas·建站
真上帝的左手3 小时前
27. 数据产品-数据中台架构规划
数据仓库·架构·数据分析·数据中台
杭州领祺科技3 小时前
零碳园区绿电直连并网验收:688 号文 + 27 号令双合规下 7 产品 4 区架构工程正解
架构·储能·电力
hhb_6184 小时前
AIAgent高可用架构与自愈实战
架构