【PostgreSQL 创新营】第一课:高维向量检索的设计与实践 答疑汇总

Q1:pg比mysql有什么优势?对大宽表的查询,采用什么方案更合适?
优势(详见钉钉直播视频答疑)
1)PG默认是heap堆存储,MySQL默认存储引擎InnoDB用的索引组织表。从默认底层的存储结构来说,PG在宽表的应用上会优于MySQL

2)PG宽表查询可采用的调优手段有:
GIN(Generalized Inverted Index, 通用倒排索引)
分区表;独立索引,任意列组合查询;参数调优等

Q2:PG有主从架构,如何从从库进行每天的数据备份?
1)生产建议使用从库进行备份。数据备份的方式有:pg_dump、pg_dumpall、pg_rman、barman、pg_basebackup等
2)日志备份可以通过:从库设置archive_mode = always方式实现日志记录。linux平台下可每日定时tar + rsync备份到远端

Q3:PG会往MPP发展吗?
目测不会,PG衍生品中不乏MPP架构的!

Q4:oracle数据库是同一个ip、 端口、 sid 是一个实例。那么postgresql是同一个ip 、端口 、数据库算一个实例吗?
1)通常我们指Oracle实例是内存结构和后台进程的统称。上述实例概念的理解不是那么准确。
2)PostgreSQL可以理解为集簇(多个逻辑的数据库在同个数据库实例上)

Q5:PG稳定版本,高可用方案
1)PG的稳定版本:最新版本
2)高可用方案:patroni(推荐)、第二象限repmgr、pgpool-II+pgbouncer

Q6:pg对比mysql有什么特殊的方言吗,开发中切换方便吗?另外SpringData有对应的支持吗
1)SQL标准支持
2)支持SpringData

Q7:pg的升级和扩容有什么好的解决方案
1)升级:pglogical、pg_upgrade、pg_dump+psql管道(不推荐)
2)扩容:LVM逻辑卷在线扩容;裸设备采用standby+主从切换方式等

Q8:pg在作为图形数据库上有成熟的应用吗?
1)agenstraph插件
2)cte递归语法
3)图语法支持
4)图谱应用等

Q9: pg的用法也和mysql一样通过类似mybatis框架集成到项目里面来用的吗?
可以

Q10:PG 库的分区表是怎么实现的,使用分区表好一点还是分库分表好一点
1)PG 10之前需通过插件实现分区表;PG 10后内置分区表,但分区上的索引需单独创建。因此推荐使用PG 11之后的版本。PG 12分区表做了增强
2)是否分库分表建议根据实际的数据量以及运维/改造成本考虑

Q11:陈PG在ETL数据仓库应用中,比Oracle有更多的优势吗?适合在kettle等ETL工具中使用吗?
可以

Q12:PG是否考虑开发出 类似oracle rac高可用架构,多个实例一个共享存储,既能达到负载均衡又能达到高可用。
希望后续会有,当前云厂商已有产品

Q13:pg功能与优势?行存储 与 列存储 内存表 临时表 扩展能力 事物/分析等服务 集群 管理便利性 方面
1)功能和优势(详见钉钉直播视频答疑)
2)可自行了解:列存索引、sharding、流复制、可见性检查规则、临时表等(PG无内存表)

Q14:PG 的json/jsonb 和Mongo相比较的优劣式有哪些?
PG可针对某些列/内容进行搜索,支持深度搜索,类型丰富

Q15: postgresql 有推荐的书吗 本人从事mysql运维
《PostgreSQL实战》
《PostgreSQL指南内幕探索》

Q16:什么时候需要清理wal日志,需要人为干预吗?如果需要人为干预,怎么干预?
通常设置参数合理的话,不需要
关于参数:
1)如果是PG 9.5之前,可调整keep_segment参数
2)如果是PG 9.5之后的,可调整max_wal_size和checkpoint_completion_target
调整参数后可通过reload+checkpoint方式生效并手动触发

常见几种可能造成WAL堆积的情况:
1)SLOTS数据槽失效/订阅缓慢,造成WAL堆积。建议做好SLOTS监控

2)设置archive_mode=on,但无配置archive_command

清理方式:
pg_archivecleanup

增强:
PG 11 支持在线修改wal_segment_size
PG 13 新增max_slot_wal_keep_size参数控制SLOT WAL上限
PG 14 新增pg_stat_wal视图

Q17:pg有类似RAC或MGR这种强一致性同步的架构有哪些?
PG本身可通过参数synchronous_standby_names设置强一致;类似架构可查看PG相关衍生品

Q18:PG数据库支持 国标 GB18030-2005 字符编码吗? 用SQL_ASCII 存储后 用java 及golang 开发时 处理汉字比较麻烦,有什么好的解决方法吗?
客户端编码gbk或gb2312或gb18030编码,建议pg使用euc_cn字符集。如果存储繁体字符,考虑utf8。具体使用场景/实际遇到的问题,欢迎线下沟通

Q19:PG 中jsonb修改指定_x0008_path的值是原子性的吗?有并发问题么?
是原子性的;无并发问题

Q20:pg的单表查询,表的记录数到多少量级,查询性能有明细的下降
受限于硬件配置(服务器和存储设备性能等)和数据库配置等,不同场景下,测试结论不同。建议可去github等网址上关注相关测试数据

上一篇:重磅开局!云原生数据库PolarDB上云场景实战


下一篇:【PostgreSQL 创新营】第六课:PostgreSQL复制原理及高可用集群 答疑汇总