用 SQLite 存了几万条记录之后,我学到的事
最开始选 SQLite 只是因为「不想装服务」,一个文件,拷走就是备份,本地跑起来零配置,怎么看都像是小玩具。
真放进去几万条记录、每天还在增长之后,才发现它比我预期能打得多:
- 普通的条件查询加好索引,几万到几十万行的量级基本感觉不到延迟
- 单机单进程的场景,它比自己维护一个连接池的服务省心
- 备份就是复制文件,不用考虑主从和一致性
但有几个坑,我踩过之后记了下来:
一是索引不是万能的。 我一开始给所有「看起来会用来查」的字段都加了索引,结果写入变慢、文件变大,而真正高频的那两三个查询反而没优化到点上,后来改成先看慢查询,再决定加什么索引。
二是「一个连接」这件事要想清楚。 单连接意味着长事务会阻塞别人,我一度在事务里做了网络请求,结果整个应用卡住十几秒。现在我的规矩是:事务里只做数据库操作,越快越好。
三是备份要主动做。 文件小、拷贝方便,反而容易忘了备份,我现在每周导出一次,另存到别的盘。
工具没有高低,只有合不合适。先想清楚数据量级和并发量,再决定要不要上更重的东西。