SQLite性能高完全是因为它不具备很多数据库必要的特性,比如完整事务性,大数据集(顺便吐槽,我们之前评测的时候测试过10亿,时间有一些比这个表里的SQLite快,也不知道这个评测怎么做的),连跨进程并发都没有。
所以说白了,性能的优势完全来自于缺少的功能。
所以说白了,性能的优势完全来自于缺少的功能。
当然,它也有很大的适用范围。
查了一下,sqlite是支持并默认启用事务,但写入是粗粒度的全表排它锁,会锁定其他连接的写操作直到完成写入。这对于高并发来说就是很大的问题了。而且对于其他基于网络连接的数据库来说,网络通信本身也是一个消耗,那一个本地IO和一个本地IO加网络IO通信的对比,也不对称了吧。
另胡扯一个,sqlite是基于本地IO文件的,以为着数据库文件直接暴露在调用面前,文件被攻击的可能性更明显;其他基于网络连接的,数据库文件前面还有DBMS和网络连接协议挡着,对于网络协议破坏较难波及到数据库文件本身。
1.SQLite只是一个渣渣本地通用型存储组件而已,根本就称不上是数据库。
2.真正的数据库都是基于网络通信,瓶颈就容易卡在这里。数据库在单机下仅拼简单的读写操作肯定容易落后于SQLite。不过,SQLite只是一个本地通用型存储组件。我如果写一个本地专用存储组件,同样可以秒掉SQLite。
Sqlite每秒只能提交很少次事务。
当你积攒很多次insert一并提交,性能很好。
如果你一次一次插入并立刻提交,保证跪下。