|
原文地址:http://blog.163.com/gwo-cce@126/blog/static/3257364920100811458387/
插入3000条数据,两分钟没插完。。然后去网上找办法,才知道大批量数据插入需要用事物,否则效率会很低。原文如下:
insert时,没有使用事务的sqlite速度的确很慢 启用事务后,速度大大的提高了。 代码1(启用事务): [PHP] $link = sqlite_open('c:\\test.db') sqlite_query($link,"begin");//打开事务 for ($i=0;$i<10000;$i++) { sqlite_query($link,"insert into tbl1 values('".time()."', ".$i.")"); } sqlite_query($link,"commit");//提交事务 [/PHP] 代码2(没有事务): [PHP] $link = sqlite_open('c:\\test.db') for ($i=0;$i<10000;$i++) { sqlite_query($link,"insert into tbl1 values('".time()."', ".$i.")"); } [/PHP] 测试一下,就会发现两者速度相差很大 2. 数据库中delete 了数据,但是数据库的大小并不减少,里边的那些数据也都在,怎么才能让这些数据从数据库中真正删除? sqlite_query($link,"VACUUM");//删除后,释放空间 SQLite3 在不执行行事务处理的情況下不是很理想, 但SELECT速度相当快。 MSSQL/Access无论是否执行事务处理的性能都相當不錯 MySQL的ByteFx与MyODBC在Insert/Delete的速度上差异略为明显。 sqlite在不开事务的情况下就是一种悲剧,因为它的多访问支持是建立在对文件的独占和共享基础上的。 |