惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
C
Check Point Blog
博客园 - Franky
V
Visual Studio Blog
云风的 BLOG
云风的 BLOG
aimingoo的专栏
aimingoo的专栏
Microsoft Security Blog
Microsoft Security Blog
V2EX - 技术
V2EX - 技术
AI
AI
Hacker News - Newest:
Hacker News - Newest: "LLM"
Jina AI
Jina AI
S
Security @ Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
H
Hacker News: Front Page
H
Hackread – Cybersecurity News, Data Breaches, AI and More
O
OpenAI News
Attack and Defense Labs
Attack and Defense Labs
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
爱范儿
爱范儿
H
Heimdal Security Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
G
Google Developers Blog
G
GRAHAM CLULEY
V
V2EX
The Register - Security
The Register - Security
人人都是产品经理
人人都是产品经理
B
Blog RSS Feed
Schneier on Security
Schneier on Security
M
MIT News - Artificial intelligence
Stack Overflow Blog
Stack Overflow Blog
Help Net Security
Help Net Security
大猫的无限游戏
大猫的无限游戏
C
CERT Recently Published Vulnerability Notes
The GitHub Blog
The GitHub Blog
V
Vulnerabilities – Threatpost
The Last Watchdog
The Last Watchdog
J
Java Code Geeks
S
Secure Thoughts
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
量子位
NISL@THU
NISL@THU
K
Kaspersky official blog
Engineering at Meta
Engineering at Meta
T
Threatpost
Recent Commits to openclaw:main
Recent Commits to openclaw:main
宝玉的分享
宝玉的分享
Security Latest
Security Latest
T
The Exploit Database - CXSecurity.com
博客园_首页
A
Arctic Wolf

博客园 - 怪怪

分支语句、面向对象,和心智包袱 复杂是个筐,什么都往里装 关于信息隐藏的感想及其它废话 由铁路订票系统联想到的 检讨和一些对C的新看法 关于异地高考引发的又一次舆论攻势 拿到了乔布斯传 媒体啊媒体 不要让橄榄枝从我的手中落下 最近的一些想法和总结 这个我觉得是苹果的一个严重坏影响 关于地沟油 数据存储体会 .NET终于也沦陷了 犯了一个策略上的错误 关于安全性的笔记 单方面评价下GEB 回复一个认为实践在数学之前的朋友 再论抽象
数据存储插入性能测试笔记
怪怪 · 2011-06-22 · via 博客园 - 怪怪

SQL Server怎么也启动不了了(忘了我原来对它做了啥了),懒得折腾或者装别的数据库了,引用下网上查到别人的。

http://www.sqlite.org/cvstrac/wiki?p=SpeedComparison

需要说明的是SQLite老版本第一个1000插入的测试似乎比这个快得多,见这里: http://www.sqlite.org/speed.html

http://www.mongodb.org/pages/viewpage.action?pageId=1475411

http://sqlserverperformance.wordpress.com/2010/02/07/some-initial-insert-test-benchmarks-on-sql-server-2008-r2/

我的结果,老机PD820,7200RPM SATA硬盘,插入是1620条的情况下:每条都sync到磁盘上的话,1.6秒;如果不sync,是0.2秒,大概每秒8000多。当前还不包括查询和其它操作,没有做完;不过做完了也没法和SQL类的比了。

这是python版的结果,生成数据就得用0.015秒,算上其它逻辑的开销,将来C版nosync应该能再提高50%到200%,sync是没戏了(瓶颈在IO)。说白了就是达到和别人相似的性能应该没什么脑力障碍,也无需参考别人的算法。

不过现在已经比别人快或者和别人差不多快是不作数的。SQL Server这样要干一大堆额外工作的就不要说了,SQLite、Mongo之流也都有更多动作降低速度。等我这个实现完整了也避免不了,毕竟这东西在底层基本是同质化的。

关于SQL Server,上面那个测试里提到如何提速写日志的时间,这个想根本解决只有靠硬件。因为日志的保障数据不出问题的原理就是,每次必须写到硬盘上,接下来才做真正的更新操作。SQLite也有事务,但它这块简单得多。

其实现在数据库的测试对一般人完全没有参考价值。就我的实践来看,对于数据库的局部设计和实现,绝不可能有什么突破性的东西,最多是些许的提高。恰恰是慢的数据库更应该引起兴趣:它提供了什么特性,让它不得不付出代价?

如果nosync的话,很显然还得至少保证下数据不会因为掉电、死机、崩溃之类的意外事故损坏数据。另外可以提供批量操作的接口让使用者选择是不是马上写回硬盘。这就有点事务的意味了,不过谨记不要真的实现完整数据库功能。

注意:批量操作并非说就是根据用户申请临时nosync就够,很显然的,比如bulkinsert一类的功能,明显应该把数据记录在内存里拼接在一起,一次性写入一大坨。想必SQLite在一个Transcation里每秒3、4万的插入就是这么来的。

另外,印象里BerkeleyDB在某些测试中有特别可怕的插入性能,10倍左右于SQLite的操作数,这个有空得确认和研究一下(估计是上面方法加吃内存吃出来的)。不过这个初步考虑不是应该优先去做的事情,因为使用场景并不多。

顺便夸奖python两句,虽然慢的吓人,但风格比较适合原型包括算法类的,慢能放大瓶颈反而对找问题有帮助 -_-。