安装完成 PG 模拟器之后,你可以在几分钟内启动第一个本地 PostgreSQL 模拟实例。PG模拟器 的核心价值在于让开发者无需完整安装 PostgreSQL 服务端即可获得高度仿真的数据库执行环境,适合本地开发、单元测试和教学场景。首次启动前,请确认安装目录的 bin 文件夹已经加入系统 PATH 环境变量。
启动 PG 模拟器实例非常简单,只需在终端输入以下命令。默认端口为 5432,如果该端口已被占用,可以通过 --port 参数指定其他端口。启动成功后终端会显示实例状态、监听地址和日志输出目录,方便你快速确认运行情况。
# 使用默认端口 5432 启动
pg-simulator start
# 指定自定义端口和数据目录
pg-simulator start --port 5433 --data-dir /opt/pg-sim/data
# 查看实例运行状态
pg-simulator status
启动完成后,你可以通过 pg-simulator connect 命令直接进入交互式 SQL 控制台。这个控制台与原生 psql 的交互方式高度一致,支持 \dt 查看表结构、\l 列出数据库、\q 退出等常用命令。对于刚接触数据库的开发者来说,PG 模拟器提供了完整的帮助文档,输入 \help 即可查看所有可用命令。
提示: 首次使用建议运行 pg-simulator check 命令进行环境自检,它会检测端口可用性、数据目录权限、内存分配等关键配置项,并给出优化建议。
正确配置环境变量是让 PG 模拟器稳定运行的基础。在 Linux 和 macOS 系统中,你需要将 PG 模拟器的安装目录和数据目录写入 shell 配置文件。在 Windows 系统中,可以通过「系统属性 → 高级 → 环境变量」进行设置。以下示例展示了 Linux 环境下的推荐配置方案。
环境变量 PG_SIM_HOME 指向安装目录,PG_SIM_DATA 指向数据存储目录。建议将数据目录与安装目录分离 ,这样在升级 PG 模拟器版本时,你的数据库文件和配置不会受到影响。设置完成后需要重新加载配置文件或重启终端窗口使变量生效。
# 在 ~/.bashrc 或 ~/.zshrc 中添加以下内容
export PG_SIM_HOME=/opt/pg-simulator
export PG_SIM_DATA=/data/pg-sim
export PATH=$PG_SIM_HOME/bin:$PATH
# 重新加载配置
source ~/.bashrc
此外,你还可以通过 pg-simulator config set 命令在运行时修改配置参数,而不必直接编辑配置文件。这条命令会将参数写入实例配置文件中,并在下次启动时自动加载。使用 pg-simulator config list 可以查看当前所有生效的配置项及其默认值。
PG 模拟器支持标准的 PostgreSQL 连接协议,这意味着你可以使用任何兼容 PostgreSQL 的客户端工具进行连接,包括 psql、DBeaver、Navicat、DataGrip 等。连接参数与真实 PostgreSQL 实例完全一致,包括主机名、端口号、用户名、密码和数据库名。
默认情况下,PG 模拟器创建了一个名为 postgres 的超级用户账号,密码为空。出于安全考虑,强烈建议在首次启动后立即修改默认密码 。你可以使用 pg-simulator user set-password 命令完成密码设置,该密码会被加密存储在实例配置文件中。
# 使用 psql 连接本地实例
psql -h 127.0.0.1 -p 5432 -U postgres -d testdb
# 使用 PG 模拟器内置客户端连接
pg-simulator connect --user postgres --database testdb
# 设置连接密码
pg-simulator user set-password --user postgres
如果需要从同一局域网内的其他机器连接 PG 模拟器实例,需要设置监听地址为 0.0.0.0 并配置防火墙规则。在实例配置文件中,将 listen_addresses 参数设置为 '0.0.0.0',然后重启实例即可。连接字符串的格式为 postgresql://用户名:密码@IP地址:端口/数据库名。
PG 模拟器完整支持 PostgreSQL 的核心 SQL 语法,包括 DDL 建表语句、DML 增删改查、事务控制、视图、索引和常用扩展函数。你可以在内置 SQL 控制台中直接执行任何标准 SQL 语句,系统会返回与真实 PostgreSQL 相同的执行结果和错误信息。
对于需要调试复杂查询的场景,PG 模拟器提供了 EXPLAIN 和 EXPLAIN ANALYZE 命令。这两个命令能够展示查询的执行计划,包括扫描方式、索引使用情况、预计行数和实际执行时间。这能帮助开发者快速定位慢查询的瓶颈所在。
-- 查看 PostgreSQL 版本信息
SELECT version();
-- 查看表结构
\d users
-- 分析查询执行计划
EXPLAIN ANALYZE SELECT * FROM users WHERE email LIKE '%test%' ORDER BY created_at DESC;
-- 创建索引
CREATE INDEX idx_users_email ON users(email);
PG 模拟器还支持在 SQL 控制台中使用 \timing 命令开启执行计时功能。开启后,每一条 SQL 语句执行完毕后都会显示耗时,这对于性能基准测试和对比优化效果非常实用。使用 \timing off 可以关闭计时。
PG 模拟器提供了一系列可调整的运行参数,用于控制内存分配、连接数上限、缓存大小和并发行为。合理的参数配置可以显著提升模拟器在处理大数据量查询时的响应速度。以下是几个关键参数的推荐调整范围和适用场景。
shared_buffers 是 PG 模拟器中最核心的内存参数,它决定了实例用于缓存数据页的内存大小。推荐将其设置为系统物理内存的 25%~40% 。如果模拟器主要用于轻量级开发测试,可以适当降低该值以节省系统资源。work_mem 控制排序和哈希操作可用的内存,对于包含大量 ORDER BY 或 JOIN 的查询,调高该值可以避免磁盘溢出。
# 在 pg-simulator.conf 中配置
shared_buffers = 256MB
work_mem = 16MB
maintenance_work_mem = 128MB
max_connections = 60
effective_cache_size = 1GB
wal_buffers = 8MB
修改参数后需要重启 PG 模拟器实例才会生效。你可以使用 pg-simulator restart 命令快速完成重启。在修改参数之前,建议先使用 pg-simulator config show shared_buffers 查看当前值,并做好记录以便回滚。参数调整应循序渐进,每次只修改一到两个参数,观察系统响应变化后再进行下一步调整。
PG 模拟器内置了完整的日志记录系统,可以追踪所有执行的 SQL 语句、错误信息、连接事件和慢查询。日志文件默认存储在数据目录下的 logs 子目录中,按日期自动分割。你可以通过配置文件调整日志级别、输出格式和保留策略。
对于需要排查性能问题的场景,建议开启慢查询日志功能。将 log_min_duration_statement 参数设置为 1000(毫秒)后,所有执行时间超过 1 秒的 SQL 语句都会被记录到日志中。将这些慢查询汇总分析,可以快速识别系统中需要优化的查询模式。
# 日志相关配置
log_destination = 'stderr'
log_statement = 'mod' # 记录所有修改数据的语句
log_min_duration_statement = 1000
log_checkpoints = on
log_connections = on
log_disconnections = on
查看实时日志可以使用 pg-simulator logs --follow 命令,它会以流式方式输出最新的日志记录。在终端中按 Ctrl+C 可以停止跟随。此外,pg-simulator logs --filter "ERROR" 可以过滤出所有包含指定关键词的日志行,方便快速定位问题。
PG 模拟器完整兼容 PostgreSQL 的数据导入导出工具,支持使用 pg_dump 和 pg_restore 进行逻辑备份与恢复。这些工具可以导出数据库的完整结构、数据、索引、约束和触发器,是日常备份和迁移的标准方案。
对于需要将数据从真实 PostgreSQL 环境迁移到 PG 模拟器的场景,使用 pg_dump 导出 SQL 文本格式文件是最稳妥的选择。导出的文件可以在 PG 模拟器中直接通过 psql 或内置客户端导入。如果数据量较大,建议使用 --jobs 参数开启并行导出,提高效率。
# 导出整个数据库到 SQL 文件
pg_dump -h 127.0.0.1 -p 5432 -U postgres -d testdb > backup.sql
# 导入 SQL 文件到 PG 模拟器实例
psql -h 127.0.0.1 -p 5432 -U postgres -d testdb < backup.sql
# 使用 PG 模拟器内置工具导出
pg-simulator export --database testdb --output ./backup.sql
在日常开发中,如果需要快速备份单个表或部分数据,可以使用 COPY 命令或 pg_dump --table 参数。这些方法比全库导出更快,也更适合频繁的增量备份场景。PG 模拟器还支持 pg-simulator snapshot create 命令创建实例快照,在需要时快速回滚到指定状态。
PG 模拟器在长期运行后,数据文件会随着插入和删除操作产生碎片,表统计信息也可能过时,影响查询优化器的判断。定期执行 VACUUM 和 ANALYZE 命令可以有效回收空间并更新统计信息,保持实例处于良好的性能状态。
建议每周至少执行一次全库维护操作,包括清理死行、更新统计信息和重建必要索引。对于数据变更频繁的表,可以适当缩短维护周期。在维护期间,实例可以保持在线运行,但重度写入场景下建议选择业务低峰期操作。
-- 回收空间并更新统计信息
VACUUM ANALYZE;
-- 针对特定表执行维护
VACUUM ANALYZE users;
-- 重建索引
REINDEX TABLE users;
-- 查看实例运行时长和信息
SELECT current_timestamp, now() - pg_postmaster_start_time() AS uptime;
另外,建议开启 PG 模拟器的自动备份功能。使用 pg-simulator backup schedule --daily --time 03:00 命令可以设置每天凌晨 3 点自动执行全量备份,备份文件默认保存在数据目录下的 backups 子目录中。结合定期备份和快照功能,可以最大程度降低数据丢失的风险。
上一篇
下载安装
下一篇
版本对比