digoal
2021-08-03
PostgreSQL , 问题 , 回应
类似这种:
《为PostgreSQL讨说法 - 浅析《UBER ENGINEERING SWITCHED FROM POSTGRES TO MYSQL》》
找同一赛道的两个产品进行同台对抗.
目标: 找到产品在市场、场景、商业、生态、设计等方面的优点、缺点.
例子:
(推)挑战:
- PG的PK查询多一次索引回表的IO.
(接)回应或反驳:
- 数据库要讲究综合性能, 不是只有PK查询, 如果只有PK查询为什么不用redis缓存.
- 多1次IO没什么问题, 现在SSD的IO延迟也就几十US, 而且内存这么便宜, 一个IO也就8K, 热数据都可以在内存中缓存下来.
- 反倒是索引组织表存在写入性能问题, 节点膨胀问题, 收缩代价问题, 二级索引性能差等问题等. 为了节省1个IO简直是丢了西瓜捡芝麻.
(推)挑战:
- PG是进程模型, 高并发性能差.
(接)回应或反驳:
- Oracle也是进程模型, 全球市场占有率第一, 大家都想干掉它.
- 进程模型不代表高并发性能差, 要分析清楚主要矛盾和次要矛盾, 事务快照问题目前才是亟待解决的, PG高并发的问题在POLARDB已经解决了. 而且后面还在做线程池, 支持更高的并发.
- 而且现在都是多核服务器, 进程模型可以更好的发挥计算能力. PG的并行计算利用多核的计算能力, 换来指数级提升就是个很好的证明.
(推)挑战:
- PG存在OS和DB双重缓存问题, 浪费内存.
(接)回应或反驳:
- 要分清主要矛盾和次要矛盾, 现在都用云盘了, IO延迟很高, 所以有buffer IO在前面挡一层, 写性能实际上会更好, 同时os层merge io可以减少IO.
- 浪费一点内存, 换来更好的写入性能何乐不为.
(推)挑战:
- PG的catalog是本地缓存, 每个链接都要缓存访问过的数据库对象的元数据, 在SaaS场景高并发长链接的情况下容易出现OOM的问题.
(接)回应或反驳:
- 你说得对, 所以Polardb在做global cache, 而且saas场景不仅仅需要globalcache:
- 《直播 SaaS行业需要什么样的数据库? - 案例: 智赢跨境电商ERP, 家庭主妇年薪百万的秘密》
您的愿望将传达给PG kernel hacker、数据库厂商等, 帮助提高数据库产品质量和功能, 说不定下一个PG版本就有您提出的功能点. 针对非常好的提议,奖励限量版PG文化衫、纪念品、贴纸、PG热门书籍等,奖品丰富,快来许愿。开不开森.