ado.net – 为什么Azure数据库在事务中表现更好

前端之家收集整理的这篇文章主要介绍了ado.net – 为什么Azure数据库在事务中表现更好前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们决定对Azure数据库使用微操作.由于我们的业务只需要“插入”和“选择”,我们决定禁止所有代码管理的sqlTransaction(数据上没有并发问题).

然后,我们注意到我们的Azure数据库实例反应非常缓慢. “rpc completed”事件发生的延迟是运行简单sql语句所需时间的数百倍.

接下来,我们使用EF6对代码进行基准测试,我们发现服务器响应非常快.由于EF6实现了内置事务,我们决定在微观上恢复sqlTransaction(ReadCommited),我们注意到一切都很好.

Azure数据库是否需要显式的sqlTransaction(由代码管理)? sqlTransaction如何影响Azure数据库性能?为什么这样实现?

编辑:我将发布一些关于我们收集痕迹的方式的更准确的信息.似乎我们的Azure事件日志有时以纳秒表示,有时以毫秒表示.看起来很奇怪.

解决方法

如果我理解你正确的问题,将多个SQL查询批处理到一个事务中将在任何DBS上获得更好的结果.每次插入/更新/删除后提交都会在不是为它设计的DBS上产生巨大的开销(如 MySQL上的MyISAM).

如果你做得太多,它甚至可能导致不良的刷新到磁盘和颠簸.我曾经有一个程序员每分钟向我的一个DB提交数千个条目,每个条目都是他们自己的事务,它使服务器停止运行.

InnoDB是MysqL最流行的2种数据库格式之一,每秒只能提交20-30个事务(或者可能是2-3次……已经很长时间了),因为每个事务都在最后刷新到磁盘上符合ACID.

猜你在找的MsSQL相关文章