sqlserver2012 实现每1000条commit一次

ananmxw 2014-07-25 01:39:51
sqlserver2012 有没有commit语句啊,要实现每insert1000条写一次磁盘操作,从而减少io次数,提搞运行速度。应该怎样做?我知道MySQL中有autocommit属性,先关闭autocommit,然后就可以控制每insert1000次commit一次了。
在SqlServer中怎样实现啊,请大神指点迷津。
...全文
668 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-07-28
  • 打赏
  • 举报
回复
引用 7 楼 ananmxw 的回复:
[quote=引用 5 楼 DBA_Huangzj 的回复:] 在SQL Server中,尽量控制每个事务的insert量,5000以下提交一次会比较好。但是你的确管的太多了。SQL Server更清楚自己的自身
这样不是能突破io瓶颈,加快数据的存储速度吗?系统要求每秒能保存1000条以上的记录,但是现在每秒才几百条,还有其他什么方法吗?请指教,谢谢[/quote] 如果你每记录的数据大小有100K,差一点的机械硬盘的写入速度大概就是 50M,再“优化”IO也没用,必须考虑升级硬件了。 如果数据大小远没到这个数量级,速度瓶颈再其他地方,考虑硬盘IO更加没用。
ananmxw 2014-07-25
  • 打赏
  • 举报
回复
引用 10 楼 ap0405140 的回复:
[quote=引用 9 楼 ananmxw 的回复:] 能不能保存在内存中啊
用表变量或临时表都相当于先保存在内存中..[/quote] 原来是这样啊,我试试看,谢谢
唐诗三百首 2014-07-25
  • 打赏
  • 举报
回复
引用 9 楼 ananmxw 的回复:
能不能保存在内存中啊
用表变量或临时表都相当于先保存在内存中..
ananmxw 2014-07-25
  • 打赏
  • 举报
回复
引用 6 楼 ap0405140 的回复:
[quote=引用 3 楼 ananmxw 的回复:] 怎样才能实现功能: insert不足1000条时,数据都存在内存中,当到了1000条时就一次性把这些数据保存磁盘。
先insert到表变量或临时表中, 当临时表记录数达到1000条时, 插入目标表, 然后清空表变量或临时表, 如此循环..[/quote] 能不能保存在内存中啊
發糞塗牆 2014-07-25
  • 打赏
  • 举报
回复
这个数是因为避免锁升级影响并发
ananmxw 2014-07-25
  • 打赏
  • 举报
回复
引用 5 楼 DBA_Huangzj 的回复:
在SQL Server中,尽量控制每个事务的insert量,5000以下提交一次会比较好。但是你的确管的太多了。SQL Server更清楚自己的自身
这样不是能突破io瓶颈,加快数据的存储速度吗?系统要求每秒能保存1000条以上的记录,但是现在每秒才几百条,还有其他什么方法吗?请指教,谢谢
唐诗三百首 2014-07-25
  • 打赏
  • 举报
回复
引用 3 楼 ananmxw 的回复:
怎样才能实现功能: insert不足1000条时,数据都存在内存中,当到了1000条时就一次性把这些数据保存磁盘。
先insert到表变量或临时表中, 当临时表记录数达到1000条时, 插入目标表, 然后清空表变量或临时表, 如此循环..
發糞塗牆 2014-07-25
  • 打赏
  • 举报
回复
在SQL Server中,尽量控制每个事务的insert量,5000以下提交一次会比较好。但是你的确管的太多了。SQL Server更清楚自己的自身
Tiger_Zhao 2014-07-25
  • 打赏
  • 举报
回复
无论在磁盘还是内存中,不用你关心!
分工协作,不要管过界!除非你用的数据库是自己开发的。
ananmxw 2014-07-25
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
无论是分段 Commit 还是一次性 Commit,其他条件不变的前提下,该如何进行磁盘 IO 由 SQL Server 自己调度,不是一个简单的 Commit 语句能干涉的了的。
怎样才能实现功能: insert不足1000条时,数据都存在内存中,当到了1000条时就一次性把这些数据保存磁盘。
Tiger_Zhao 2014-07-25
  • 打赏
  • 举报
回复
引用 楼主 ananmxw 的回复:
sqlserver2012 有没有commit语句啊,要实现每insert1000条写一次磁盘操作,从而减少io次数,提搞运行速度。应该怎样做?...
不列理由到还是个正常提问,列了理由——楼主你是来搞笑的吧? 无论是分段 Commit 还是一次性 Commit,其他条件不变的前提下,该如何进行磁盘 IO 由 SQL Server 自己调度,不是一个简单的 Commit 语句能干涉的了的。 唯一影响的只是你的事务会不会超时而已。 不要把数据库想得象结构文件那么简单,这都是上个世纪八十年代的“先进”概念了。
發糞塗牆 2014-07-25
  • 打赏
  • 举报
回复
begin tran 循环 commit

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧