sqlite 启用事务

原文地址: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在不开事务的情况下就是一种悲剧,因为它的多访问支持是建立在对文件的独占和共享基础上的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值