SQLite3速度慢,每秒只能执行几十次INSERT?

2019-10-02 22:55发布

实际上,SQLite很容易在普通的台式计算机上每秒执行50,000或更多INSERT语句。但它每秒只会进行几十次事务。事务速度受磁盘驱动器转速的限制。事务通常需要两个完整的磁盘盘旋转,这在7200RPM磁盘驱动器上限制您每秒约60个事务。

事务速度受磁盘驱动器速度的限制,因为(默认情况下)SQLite实际上等待,直到事务完成之前数据确实安全地存储在磁盘表面上。这样,如果您突然断电或者操作系统崩溃,您的数据仍然是安全的。

默认情况下,每个INSERT语句都是自己的事务。但是如果用BEGIN ... COMMIT包围多个INSERT语句,则所有插入都被分组到一个事务中。提交事务所需的时间在所有随附的insert语句中分摊,因此每个insert语句的时间大大减少。

另一种选择是运行PRAGMA synchronous = OFF。此命令将导致SQLite不等待数据到达磁盘表面,这将使写入操作看起来更快。但是,如果在事务中间断电,则数据库文件可能会损坏。

文章来源: https://www.toutiao.com/group/6731130448530899463/