sqlserver2012 有没有commit语句啊,要实现每insert1000条写一次磁盘操作,从而减少io次数,提搞运行速度。应该怎样做?我知道MySQL中有autocommit属性,先关闭autocommit,然后就可以控制每insert1000次commit一次了。
在SqlServer中怎样实现啊,请大神指点迷津。
------解决方案--------------------
begin tran
循环
commit
------解决方案--------------------
不列理由到还是个正常提问,列了理由——楼主你是来搞笑的吧?
无论是分段 Commit 还是一次性 Commit,其他条件不变的前提下,该如何进行磁盘 IO 由 SQL Server 自己调度,不是一个简单的 Commit 语句能干涉的了的。
唯一影响的只是你的事务会不会超时而已。
不要把数据库想得象结构文件那么简单,这都是上个世纪八十年代的“先进”概念了。
------解决方案--------------------
无论在磁盘还是内存中,不用你关心!
分工协作,不要管过界!除非你用的数据库是自己开发的。
------解决方案--------------------
在SQL Server中,尽量控制每个事务的insert量,5000以下提交一次会比较好。但是你的确管的太多了。SQL Server更清楚自己的自身
------解决方案--------------------
先insert到表变量或临时表中,
当临时表记录数达到1000条时,
插入目标表,
然后清空表变量或临时表,
如此循环..
------解决方案--------------------
这个数是因为避免锁升级影响并发
------解决方案--------------------
用表变量或临时表都相当于先保存在内存中..
------解决方案--------------------
如果你每记录的数据大小有100K,差一点的机械硬盘的写入速度大概就是 50M,再“优化”IO也没用,必须考虑升级硬件了。
如果数据大小远没到这个数量级,速度瓶颈再其他地方,考虑硬盘IO更加没用。