当前位置:首页 > 每日看点

postgresql也很强大,为何在中国大陆,mysql成为主流,postgresql屈居二线呢?

卡卷网2年前 (2025-01-17)每日看点257

普通人用pg会碰到稀奇古怪的障碍,一气之下就退回mysql了呗。我的一个小项目就很能说明这一点:

这是我弄的一个人练手项目,自动从贴吧采集图片做成梗图视频发抖音。用数据库来存图片及其对应tensor,并用cos相似度去重。

最开始用的是mysql,但当表来到1t左右,由于每张图片都要全表扫相似度,添加图片变得特别特别慢。当然这是算法本身的问题,但是抛开这些,select、update本身的性能下降也是肉眼可见的。

  • 是是是,我知道向量搜索用fasis或者es会好很多,但我这毕竟是小项目不想把东西放的东一块西一块的。于是我决定跳坑pg。用上pgvector插件提供的相似度索引后,一切变得非常丝滑。
  • 基于同样的缘由我也不想把图片和相应信息分开放。

直到我单表体积到了3.6T

我一看我草硬盘空间要没了,那么把打分低的图片都删掉呗。

然后我碰见了第一个不可理喻的事情:

删除速率极低,1秒5条!

  • 然而explain analyze后发现Plan阶段是瞬间完成的。

但是这难不倒程序员嘛,我tmux跑了个分batch删除的脚本睡觉去了。

起来一看,令我震惊的事情发生了:

删掉了80%的条目后,占用空间一点没降!

于是我赶紧谷歌,发现原来pg的删除原来只是简单标记了下,需要vacuum才能删除。

那就vacuum呗。然后我发现过程中表几乎无法被访问,只好暂停了所有任务,跑了快2天才把vacuum跑完。为了让腾空间立即起效我还冒险删掉了zfs所有快照。

然后我震惊的发现:

vacuum完后体积一点没降!

这tmd就说不通,可能的解释是pg保存了删除的事务日志以供还原,但我tmd哪里等得起,vacuum full走起。

结果你大概猜的到:

vacuum full跑了一半就因为用光了所有空间失败了

这tm简直难以理喻,毕竟新表才200g而我还有900g空闲空间。

我谷歌半天后,得到的结论是:TM vacuum full也给删除写了一大堆事务日志,于是就爆了。

最后我只能新建了一个表,用脚本完成了数据迁移。





你以为这就结束了?

naive!

写了个脚本每天自动删重复图片后,我也以为事情就结束了,但没过几天我又双叒叕震惊的发现:

卧槽update怎么极慢

经过一番谷歌后我发现:原来pg的update就是删除再插入。于是简单变更个published字段就相当于把昂贵的tensor再重新插入一边。

而且我发现set published_but_reuseable=id in any(%s)的方式,速度远慢于我直接更新那几个id。合着优化器根本没优化呗。那岂不是相当于天天反复插全表?我每天1快照存着都没爆空间真得感谢zfs去重功能做得好。

麻了,那就改呗,丧失点容错性我还能忍。




你以为这就完了?

naive!

为了改这些我熬了好几夜,惊奇的发现每到0点数据库就卡到读不出来数据,弄得我还以为是查询写呲了。

你猜这么着?auto vacuum!!!而且:

就200g数据auto vacuum一跑就1个小时,每天来一次,期间业务基本都跑不了!

我承认我在nas上部署db性能是不好,但也不至于此啊,sqlite都没这么差吧!



最后我就非常识趣的圆润滚回mysql了,大不了不做去重了!

(有些结论是熬夜时得出的,现在回看可能受到了auto vacuum的影响。如果被误导了别骂我,直接打电话骂这个雷打不动1小时的auto vacuum去)

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/9552.html

分享给朋友:

相关文章

那些极速版软件其存在目的是什么?

那些极速版软件其存在目的是什么?

我看了很多回答,其实都没有回答道点子上。 你知道极速版APP为什么叫极速版吗? 是他看视频更快吗?显然不是。 只是它的安装包体积更小,下载安装速度更快而已,所以叫极速版app。当然啦,现在极速版APP和原声版APP,安装包已经没有区别了,这…

手机用久了,垃圾都在哪里,总是内存显示不够,还很卡,这可怎么解决?

手机用久了,垃圾都在哪里,总是内存显示不够,还很卡,这可怎么解决?

大家的手机在使用一段时间之后啊,是不是都会出现又卡又慢的情况,尤其是安卓手机,这种现象更是非常明显,而且很多朋友啊,也都知道手机之所以会出现这些问题,一般都是手机安装了大量软件,而这些软件在使用过程中会产生大量的缓存垃圾,因此啊时间久了就会…

内存和硬盘的单位都是G,两者的功能是什么?谁能用简单通俗的方式来解读一下?

内存和硬盘的单位都是G,两者的功能是什么?谁能用简单通俗的方式来解读一下?

要弄清楚这个问题,首先要弄清楚什么是内存,什么是硬盘,在计算机的组成结构中有一个很重要的部分是存储器。它是用来存储程序和数据的部件。对于计算机来说,有了存储器,才有记忆功能,,才能保证正常工作。存储器的种类很多。按其用途可分为主存储器与辅助…

下一个风口最可能是什么?

下一个风口最可能是什么?

肯定是一带一路了,国内没什么卷的空间了,现在国家正在给一带一路的第三世界国家建设基础设施,等交通打通之后,就是通信打通,通信打通就是贸易打通,未来我建议大家重仓小语种,阿拉伯语最值得学(也有其他小语种自己去查一带一路国家),将来去其他国家随…

网易云音乐上看到过最触动的热评是什么?

网易云音乐上看到过最触动的热评是什么?

1. “昨天晚上洗澡的时候,我忘记拿毛巾了,喊了声妈妈帮我拿下毛巾, 正当我伸出左手准备接毛巾的时候,我愣了一下,又换了右手。” 希望你永远不会听懂这句话, 永远都不要懂。 ——网易云热评《关键词》 2. 小时候跟着父亲去城里卖西瓜,害…

有没有高手指点一下Google做SEO现在的技巧啊?心好累。

有没有高手指点一下Google做SEO现在的技巧啊?心好累。

搜索引擎优化 (SEO) 的目标是让 Google 在用户输入相关搜索查询时提供您的网页链接。 虽然没有固定的蓝图可以保证您获得最高排名,但有几种 SEO 最佳实践(您可以将其视为 SEO 规则)可以增加您在非付费结果中获得良好排名的机会。…

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。