这不是和服务器通讯几次的问题,应该说只要你和数据库一直连接着,那么就一直在通讯,直到连接断开使用Transaction,要手动提交(commit),数据库才会一次性提交事务相关的所有数据

解决方案 »

  1.   

    我的意思是,是否是Commit时批量将数据传上去的?
    你所说的一直连接,其实在不进行操作时Connetion的维持通讯开销很小,可以不管
    但是我如果要调用20000次存储过程,每次都只传一个byte的参数,就要考虑效率了;我希望能够一次性传输这20000个请求
      

  2.   

    这样好吗?服务器要不很空 要不很忙 
    事实上 你集中提交也没什么优势啊 如果数据量很大的话 好比你一次提交2W个SP 那其他连接效率肯定受影响了!
    关于用transaction 补充一句 tranaction的写入优先级是很高的 借此才能保证数据的一致性 checkpoint发生的时点不是按照发生的交易数量 而是跟频繁程度和数据量等有关
    如果你一次提交这么多SP 确保服务器有UPS 否则突然断电重启sql就有得rollback/forward了
      

  3.   

    还不是很明白,不过我决定不用transaction了
      

  4.   

    SQL Server默认是自动提交模式。当你执行完insert或update等DML操作后,会自动将结果提交到服务器上。而你说的commit一批是为了保持数据的完整性,如:一次修改2000条,全部成功那么commit就会全部一次提交到服务器,如果有一条没有成功,你不希望让这个结果反映到服务器上,那么就rollback。这个时候才用到显式的commit。而这个过程是会锁定那个表的。你的目的只是为了防止每次通讯浪费资源,这个你没必要担心,别用显式的commit了。就修改一条,提交一条吧。
      

  5.   

    关于transaction 补充一句 tranaction log的写入优先级是很高的