本文讨论了如何在PostgreSQL中添加波兰语配置。PostgreSQL 19将自动包含波兰语字典,而当前版本需要安装hunspell-pl,并创建文本搜索配置和字典。通过正确配置,可以实现波兰语的词干提取和停用词处理。最后提供了完整的SQL脚本以供测试。
PostgreSQL 19引入了REPACK的CONCURRENTLY选项,允许在不获取独占锁的情况下重组表。该功能通过共享更新锁创建初始副本,并利用并发后台工作者进行逻辑解码。尽管存在复制槽资源稀缺和死锁风险等问题,但设计和代码已基本完成,预计将在后续更新中解决。测试结果显示,重组后表大小显著减少,插入性能略有下降,但整体影响不大。
PostgreSQL 19引入了在线启用和禁用数据校验和的功能,允许在运行的集群中进行操作,无需限制访问。此功能通过后台工作进程处理所有数据库的缓冲区,确保数据校验和在写入时计算。启用和禁用过程需要重写所有磁盘页面,可能耗时较长,但命令执行是瞬时的。这项改进使旧版本Pg用户能够更安全地启用校验和。
PostgreSQL 19引入了新的pg_get_*_ddl()函数,包括pg_get_database_ddl()、pg_get_role_ddl()和pg_get_tablespace_ddl(),用于生成重建数据库、角色和表空间的DDL语句。这些函数支持格式化输出和其他选项,返回的结果包含创建和修改语句,用户需具备相应权限才能调用。
PostgreSQL 19引入了“FOR PORTION OF”语法,允许用户基于时间范围更新和删除数据,简化历史数据管理,确保历史数据的准确性。
PostgreSQL 19引入了COPY TO命令的JSON格式选项,允许用户将查询结果或表数据直接导出为JSON对象流。此功能仅支持COPY TO操作,用户可以指定列列表以导出特定列,提高了数据导出效率,适用于需要JSON格式的场景。
PostgreSQL 19 增加了 ALTER PUBLICATION 中对 EXCEPT TABLE 的支持,允许用户灵活地修改排除列表,从而更有效地管理表的发布和排除,提升了数据库的灵活性和可控性。
PostgreSQL 19引入了pg_plan_advice模块,允许用户稳定查询计划选择。用户可以强制执行特定计划决策,尽管这可能导致性能问题,尤其是在数据分布变化时。该功能虽然强大,但滥用风险较高。
PostgreSQL 19引入了REPACK命令,整合了VACUUM FULL和CLUSTER的功能,简化了用户理解,同时保留了旧命令。REPACK支持重写表以回收磁盘空间,并提供新的进度视图pg_stat_progress_repack。尽管当前不支持并发模式,但未来可能会增加此功能。该命令使用简单,允许用户选择VERBOSE和ANALYZE等选项。
PostgreSQL 19将引入EXCEPT TABLE语法,允许用户在创建出版物时排除一个或多个表,从而避免将这些表的数据发送给订阅者。对于分区表,排除将在根级别应用,未来将支持通过ALTER PUBLICATION管理这些排除项。这一改进将增强逻辑复制的灵活性。
PostgreSQL 19引入了pg_dumpall的新功能,支持非文本输出格式(自定义、目录和tar格式),提高了备份和恢复的速度,并允许用户选择性恢复特定数据库,增强了pg_dumpall的实用性。
2026年2月9日,Álvaro Herrera 提交补丁,允许按进程类型设置 log_min_messages,支持以逗号分隔的级别列表,兼容旧版本,方便开发者调试。
Jeremy Schneider建议在执行计划中增加I/O时间信息,以更好地理解并行执行性能。分析显示,PostgreSQL在处理39GB数据时,实际读取时间为2.5分钟,但由于并行处理,墙钟时间仅为53秒,工作者读取速度为272MB/s,总带宽需求为739MB/s。这一改进提供了更详细的执行计划视图。
文章讨论了如何在PostgreSQL中处理带时区的时间戳。通过创建自定义函数`tstz_at_timezone`,可以在不改变用户时区的情况下返回指定时区的时间戳,并支持格式化输出,方便显示不同时区的时间和偏移量。
2025年9月,David Fetter在IRC上询问快速加载CSV到数据库的工具。我尝试开发一个,利用Claude生成基础功能,并添加测试和功能。该工具能自动识别分隔符、列名和数据类型,简单易用,已成功处理多个CSV文件,包括PostgreSQL日志。
我开发了一款粘贴服务,优化了复杂连接条件的查询输出格式,解决了缩进问题。用户可以通过命令行或工具使用此格式化程序,无需在网站上存储内容。
添加索引会降低写操作速度,索引数量增加时数据加载速度显著下降。使用部分索引和多列索引可提升性能,因此在性能优化时应谨慎添加复杂索引。
最近对PostgreSQL中JSON数据的存储效率进行了讨论,发现pglz压缩效果稍好,但lz4速度更快。测试表明,jsonb的存储略小于json,但解析速度较慢。总体来看,使用文本类型和lz4压缩存储JSON数据更为高效。
2025年10月9日,Amit Kapila提交补丁,支持在发布中添加“所有序列”,以便于同步和升级。11月5日,他又提交了序列同步补丁,新增INIT和READY状态,通过创建和修改订阅命令实现序列同步,提高逻辑复制效率。
使用tsvector列并建立索引可以提高查询速度,尤其是GiST索引。尽管GIN索引在某些情况下表现良好,但tsvector列的维护成本较高,因此在数据更新频繁的应用中,使用tsvector列可能不划算。
完成下面两步后,将自动完成登录并继续当前操作。