TwiScan
Hot
Communities
Account collections
Login
Register
English
日本語
한국의
简体中文
繁体中文
Register and share your invite link to earn from video plays and referrals.
Register now
Yachen Liu
@Blankwonder
已退休,生活、旅行、科技、投资类话题博主
Joined March 2009
369
Following
59.8K
Followers
Yachen Liu
@Blankwonder
2026.07.01 02:36
不管是用文件系统还是用 sqlite 存储聊天记录,本质区别是如何在一个大段的 block 存储上,存取大量的短数据,这才是根本区别。至于怎样索引,用什么算法搜索,两种方案基础之上都可以实现,那不是问题的关键。 用文件系统直接存储的问题是,文件系统是一个系统级公有设施。它要满足的是整个 OS 层面的通用需求,而不是某个单进程、某个业务场景的最优访问模式。所以如果把大量业务对象直接映射成普通文件,单文件的存取就会引入额外开销。当然现代文件系统已经把性能压榨到极限了,但抽象层级决定了它不可能专门为聊天记录这种大量短数据场景优化。每一个文件的打开,都可能涉及路径解析、目录查找 、inode 加载、权限检查、句柄管理、元数据更新等等文件系统开销,然而这对于聊天记录的存取场景完全是不必要的。 相比之下,sqlite 建立在文件系统之上,存取操作损耗低了很多,检索实现起来也更加容易。 不过如果仅讨论每一个聊天会话写一个文件这样的使用场景,一般用户顶多几百几千个聊天会话,这种量级下性能差距微乎其微,用啥都行。 我真正想吐槽的是,之前微信 Mac 版本把表情包、缩略图这种小数据也一概全部单文件塞文件系统,我的聊天记录不算特别多,微信的数据文件夹下都有上几十万个小文件,虽然用着没啥问题,但是对于系统备份、恢复、迁移操作都是灾难,90% 的时间浪费在小文件处理上。我记得某次测试,单 rm -Rf 删微信数据,就删了好几个小时,微信自己的聊天迁移如此缓慢,我猜也是同一个原因。4.0 新版本应该已经修了这个问题。
Show more
0
0
37
84
4
Forward to community
Most Popular Users
New York Post
@nypost
4.1M Followers
Serenity
@aleabitoreddit
1M Followers
billboard
@billboard
16.5M Followers
オリコンニュース
@oricon
1.9M Followers
Reuters
@Reuters
26.3M Followers
BTS_official
@bts_bighit
45.3M Followers
First Squawk
@FirstSquawk
556.5K Followers
Hello! Project Link
@UpFrontLink
15.5K Followers
一劍浣春秋
@chee828
0 Followers
BLACKPINKOFFICIAL
@BLACKPINK
11.6M Followers
Pirat_Nation 🔴
@Pirat_Nation
341.9K Followers
i-dle (아이들)
@official_i_dle
2.4M Followers
ENHYPEN OFFICIAL
@ENHYPEN
8.4M Followers
ATEEZ(에이티즈)
@ATEEZofficial
4.8M Followers
INI
@official__INI
510.1K Followers