回答

收藏

python和sqlite3的插入性能

技术问答 技术问答 232 人阅读 | 0 人回复 | 2023-09-14

我正在向SQLite大量插入数据库,并试图了解我应该期望的性能与我实际看到的性能之间的关系。5 r5 ~# b& {; \) ~* O9 A( `
我的桌子看起来像这样:
3 O+ n! \+ p4 [' S: O: Ecursor.execute(               "CREATE TABLE tweets(                tweet_hash TEXT PRIMARY KEY ON CONFLICT REPLACE,            tweet_id INTEGER,            tweet_text TEXT)"        )我的插入看起来像这样:
" ~: l; j3 S& S. vcursor.executemany("INSERT INTO tweets VALUES ",to_write)to_write元组列表在哪里?
* R, v) V' [8 T) v% {, l目前,2008年5000台Macbook当数据库中有1200万行时,插入行花了我16分钟左右。
/ I; K& r/ |- Z, @1 I3 w这听起来合理吗?还是发生了什么大事?
. V2 |$ }  x, e/ k                                                               
/ D- D) X- o# T2 A& }$ ~    解决方案:                                                                : K, a8 Q: r: x. j- w5 v  n' z2 D
                                                                据我所知,性能差的主要原因是浪费时间来执行很多SQLite事务。我该怎么办?1 _4 h6 |2 S2 L& l" ^" t
然后删除索引
! W/ C) K/ W- Z$ SPRAGMA synchronous = OFF (or NORMAL)插入N行的块(定义N,尝试N = 5000开始)。  ?$ H0 X9 K9 v6 I& p* L" a1 A4 |
BEGIN TRANSACTION插入后做
: p! a, J; E/ Y! HCOMMIT另请参见http://www.sqlite.org/faq.html#q19
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则