Sqlite3的使用小结(不定期更新)
最近在做Sqlite3的性能测试: 测试一: 首先建立一个数据库; 创建一个表格: 开始循环 { 向数据库里面插入1000数据; sleep(五秒) 删除所有数据; sleep(五秒) } 通过程序的CPU占用和内存使用来判断性能。 在测试过程中发现了sqlite的插入时间很久,于是我查了查资料:
原因:它以文件的形式存在磁盘中,每次访问时都要打开一次文件,如果对数据库进行大量的操作,就很慢。 解决办法:用事物的形式提交,因为开始事务后,进行的大量操作语句都保存在内存中,当提交时才全部写入数据库,此时,数据库文件也只用打开一次。如果操作错误,还可以回滚事务。 接口:事务的操作没有特别的接口函数,就是一个普通的sql语句而已,分别如下: begin transaction ---开始一个事务 committransaction ---提交事务 rollbacktransaction ---回滚事务 在插入1000条记录前后分别使用:begin transaction 和committransaction 发现速度果然上去了。原来插入1000条需要几十秒;修改后只需要不到1秒。 想想也是,原先进行了1000次的打开文件、写文件、关闭文件的操作费时费力也是正常的。 注意事项二: 关于sqlite3的内存泄露问题。 1. 在使用 <1>准备语句(prepared statement)对象 typedef struct sqlite3_stmt sqlite3_stmt; 使用sqlite3_finalize()销毁这个对象(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |