❝开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共3400人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,开8群近400 9群 200+,开10群PolarDB专业学习群100+)
题目是SQLite打败了PostgreSQL,是的的确在我的这个目前的工作环境,完败。公司的PostgreSQL的实例不多10万多个实例,对你没有听错10万多。线下终端全部是PostgreSQL,不过马上就要改朝换代了,SQLlite是新的研究对象了,好了单位的机密就不能继续说了,还是说技术吧。
SQLite 和PostgreSQL比功能,计算能力,应用场景,SQLlite就是一个菜鸡,但是要比数量,使用的人数,适应的场景,PostgreSQL完败。我们回来找一期说说 postgreSQL在终端市场上的一些问题。
SQLite这个数据库起初也是一个企业因为没有合适的线下终端数据库,而自己研发的一款数据库,目的就是嵌入式。他的起源是2004年,3.0到了2025年他已经发展到了3.51版本,而这些版本之间的不同和操作系统是有关系的。
为什么要搞清楚版本的问题,主要是每个sqllite的版本和操作系统之间的关系非常紧密,不同的SQLITE提供的功能和能力与本身和操作系统密切相关。
https://www.sqlite.org/src/taglist
📅 软件版本发布与操作系统版本推测表
| major-release | 2025-11-04 | ||||||
| version-3.51.0 | 2025-11-04 | ||||||
| version-3.42.1 | 2025-08-06 | ||||||
| version-3.44.5 | 2025-07-24 | ||||||
| version-3.50.4 | 2025-07-30 | ||||||
| version-3.50.3 | 2025-07-17 | ||||||
| version-3.50.2 | 2025-06-28 | ||||||
| version-3.50.1 | 2025-06-06 | ||||||
| version-3.50.0 | 2025-05-29 | ||||||
| version-3.49.2 | 2025-05-07 | ||||||
| patch-release | 2025-02-19 | ||||||
| version-3.49.1 | 2025-02-18 | ||||||
| version-3.49.0 | 2025-02-06 | ||||||
| version-3.48.0 | 2025-01-14 | ||||||
| version-3.47.2 | 2024-12-07 | ||||||
| version-3.47.1 | 2024-11-25 | ||||||
| version-3.47.0 | 2024-10-21 | ||||||
| version-3.46.1 | 2024-08-13 | ||||||
| version-3.46.0 | 2024-05-23 | ||||||
| version-3.45.3 | 2024-04-15 | ||||||
| version-3.44.3 | 2024-04-05 | ||||||
| version-3.45.2 | 2024-03-12 | ||||||
| version-3.45.1 | 2024-01-30 | ||||||
| version-3.45.0 | 2024-01-15 | ||||||
| version-3.44.2 | 2023-11-24 | ||||||
| version-3.44.1 | 2023-11-22 | ||||||
| version-3.44.0 | 2023-11-01 | ||||||
| version-3.43.2 | 2023-10-10 | ||||||
| version-3.43.1 | 2023-09-11 | ||||||
| version-3.43.0 | 2023-08-24 | ||||||
| version-3.42.0 | 2023-05-16 | ||||||
| version-3.41.2 | 2023-03-22 | ||||||
| version-3.41.1 | 2023-03-10 | ||||||
| version-3.41.0 | 2023-02-21 | ||||||
| version-3.40.1 | 2022-12-28 | ||||||
| version-3.40.0 | 2022-11-16 | ||||||
| version-3.39.4 | 2022-09-29 | ||||||
| version-3.39.3 | 2022-09-05 | ||||||
| version-3.39.2 | 2022-07-21 | ||||||
| version-3.39.1 | 2022-07-13 | ||||||
| version-3.39.0 | 2022-06-25 | ||||||
| version-3.38.5 | 2022-05-06 | ||||||
| version-3.38.4 | 2022-05-04 | ||||||
| version-3.38.3 | 2022-04-27 | ||||||
| version-3.38.2 | 2022-03-26 | ||||||
| version-3.38.1 | 2022-03-12 | ||||||
| version-3.38.0 | 2022-02-22 | ||||||
| version-3.37.2 | 2022-01-06 | ||||||
| version-3.37.1 | 2021-12-30 | ||||||
| version-3.37.0 | 2021-11-27 | ||||||
| version-3.36.0 | 2021-06-18 | ||||||
| version-3.35.5 | 2021-04-19 | ||||||
| version-3.35.0 | 2021-03-12 | ||||||
| version-3.34.1 | 2021-01-20 | ||||||
| version-3.34.0 | 2020-12-01 | ||||||
| version-3.33.0 | 2020-08-14 | ||||||
| version-3.32.0 | 2020-05-22 | ||||||
| version-3.31.0 | 2020-01-22 | ||||||
| version-3.30.0 | 2019-10-04 | ||||||
| version-3.29.0 | 2019-07-10 | ||||||
| version-3.28.0 | 2019-04-16 | ||||||
| version-3.27.0 | 2019-02-07 | ||||||
| version-3.26.0 | 2018-12-01 | ||||||
| version-3.25.0 | 2018-09-15 | ||||||
| version-3.24.0 | 2018-06-04 | ||||||
| version-3.23.0 | 2018-04-02 | ||||||
| version-3.22.0 | 2018-01-22 | ||||||
| version-3.21.0 | 2017-10-24 | ||||||
| version-3.20.0 | 2017-08-01 | ||||||
| version-3.19.0 | 2017-05-22 | ||||||
| version-3.18.0 | 2017-03-28 | ||||||
| version-3.17.0 | 2017-02-13 | ||||||
| version-3.16.0 | 2017-01-02 |
这个部分我看完也有点懵,怎么版本号低的在后面版本号高的在前面,是的就是这样官方文档就是这样。
| 3.0 (2004) | |||
| 3.6.x (2008) | |||
| 3.7.x (2010) | |||
| 3.8.x (2013) | |||
| 3.9~3.15 (2015–2016) | |||
| 3.24+ (2018) | |||
| 3.33+ (2020) | |||
| 3.39+ (2022) | |||
| 3.45+ (2024) |
研究这么一遛够,我目前得出的结论是3.45这个版本会比较适合,原因也很简单。这个版本的可以兼容大部分的现在流行的操作系统,同时也不会特别的落后,特别新的操作系统就算了,行业的原因,这里不解释。
下一步就是安装,这里现找到的就是LINUX下的编译安装在编译安装时遇到一个问题,就是tcl 测试环境的问题,这里查询可以将这个不进行编译。
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
echo '#ifndef USE_SYSTEM_SQLITE' >tclsqlite3.c
cat sqlite3.c >>tclsqlite3.c
echo '#endif /* USE_SYSTEM_SQLITE */' >>tclsqlite3.c
cat data/sqllite345/src/tclsqlite.c >>tclsqlite3.c
tclsh8.6 data/sqllite345/tool/buildtclext.tcl --destdir "" --cc "gcc" -g -O2 -DSQLITE_OS_UNIX=1 -DSQLITE_ENABLE_MATH_FUNCTIONS
can't read "@": no such variable
while executing
"subst $cmd"
invoked from within
"if {$tcl_platform(platform)=="windows"} {
# We are only able to install, uninstall, and list on Windows.
# The build process is handled by the Mak..."
(file "/data/sqllite345/tool/buildtclext.tcl" line 69)
make: *** [Makefile:1603: tclextension-install] Error 1
编译时./configure --disable-tcl 去掉tcl测试环境,在进行make make install就可以了,版本3.45 Rocky linux 8.10
安装完毕,我就开启了自学模式,也感谢群里的同学,我问有没有sqllite的群,然后就给我拉到QQ群了。这个同学叫“小明”。

Sqllite 由两个部分组成,一个是主体,另一个是测试单元,在编辑的时候我们抛弃的也就是测试的单元,测试单元与数据库没有必然的联系,从图中也可以看出
下面开始是快速的对一些我们感兴趣的问题进行快速的梳理,今天只是一部分,下期我们继续
1 并发的问题,在PG上并发那不是问题,对于sqlite来说,按就是一个大问题,sqlite有两种模式,rollback-journal 和 wal模式,这个是通过命令PRAGMA journal_mode = WAL; 来控制的
那么这两个模式有什么区别,一句话
rollback-journal 模式会产生 读 和 写的 库锁,你没有看错,库锁。 wal 模式会产生 多读 并发,和多写的库锁。
2 在测试中很容易就会出现数据库的锁
测试的方法也很简单,两个SQL然后批量进行运行
测试分为 reader.sql writer.sql 读写的操作,然后还有一个sh 脚本,来调用
#!/bin/bash
for i in {1..50}; do
whiletrue; do
sqlite3 data/data/test.db < data/data/writer.sql
done &
done
# 50 并发查询
for i in {1..50}; do
whiletrue; do
sqlite3 data/data/test.db < data/data/reader.sql
done &
done
SELECT count(*)
FROM test_data
WHERE value > (abs(random() % 50000));
BEGIN TRANSACTION;
INSERT INTO test_data (name, value)
VALUES ('writer_' || random(), abs(random() % 100000));
COMMIT;
在测试中一开始就产生了大量的database locks

所以,所以我们会出一期,如何使用sqlite开发,还有一期如何sqllite进行运维和使用的文章,敬请期待吧,sqllite 是世界装机量最大的数据库,这会在我们这边也要被印证了。回来我们有一期在分析一下,为什么SQLite 打败了PostgreSQL.
和架构师沟通那种“一坨”的系统,推荐只能是OceanBase,Why ?
OceanBase Hybrid search 能力测试,平换MySQL的好选择
写了3750万字的我,在2000字的OB白皮书上了一课--记 《OceanBase 社区版在泛互场景的应用案例研究
OceanBase 6大学习法--OBCA视频学习总结第六章
OceanBase 6大学习法--OBCA视频学习总结第五章--索引与表设计
OceanBase 6大学习法--OBCA视频学习总结第五章--开发与库表设计
OceanBase 6大学习法--OBCA视频学习总结第四章 --数据库安装
OceanBase 6大学习法--OBCA视频学习总结第三章--数据库引擎
OceanBase 架构学习--OB上手视频学习总结第二章 (OBCA)
OceanBase 6大学习法--OB上手视频学习总结第一章
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
OceanBase 学习记录-- 建立MySQL租户,像用MySQL一样使用OB
“合体吧兄弟们!”——从浪浪山小妖怪看OceanBase国产芯片优化《OceanBase “重如尘埃”之歌》
MongoDB “升级项目” 大型连续剧(3)-- 自动校对代码与注意事项
MongoDB “升级项目” 大型连续剧(2)-- 到底谁是"der"
MongoDB “升级项目” 大型连续剧(1)-- 可“生”可不升
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
MongoDB 2023年度纽约 MongoDB 年度大会话题 -- MongoDB 数据模式与建模
MongoDB 麻烦专业点,不懂可以问,别这么用行吗 ! --TTL
免费PolarDB云原生课程,听课“争”礼品,重塑云上知识,提高专业能力
非“厂商广告”的PolarDB课程:用户共创的新式学习范本--7位同学获奖PolarDB学习之星
“当复杂的SQL不再需要特别的优化”,邪修研究PolarDB for PG 列式索引加速复杂SQL运行
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火
PostgreSQL 新版本就一定好--由培训现象让我做的实验
说我PG Freezing Boom 讲的一般的那个同学,专帖给你,看看这次可满意
PostgreSQL 无服务 Neon and Aurora 新技术下的新经济模式 (翻译)
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
这个 PostgreSQL 让我有资本找老板要 鸡腿 鸭腿 !!
MySQL相关文章
一篇为MySQL用户,分析版本核心差异的文章--8.028-8.4的差异
那个MySQL大事务比你稳定,主从延迟低,为什么? Look my eyes! 因为宋利兵宋老师





