62,073
社区成员
发帖
与我相关
我的任务
分享
tran.Begin();
comm.Execute("insert ......");
comm.Execute("update ......");
tran.Commit();
那么你去看那些老的(现在可能已经被淘宝的大公司挤出去了)的老DBA的技术博客,他们会举出这样的数据事实,就是update语句在某些应用服务上的执行时间是2秒钟,造成了事务长时间加锁,而同样的语句在数据服务器本地访问则只需要20毫秒。
这个结论对不对呢?应该说没有错误。这就说明如果跨服务器的通讯不稳定或者速度慢(例如两个IDC机房之间),那么就要尽量少选择或者尽量不选择具有“事务操作”的算法逻辑。或者将一些核心的功能以SOA的方式在离数据库服务器最近(甚至就是本地)的服务器上发布,其它应用服务器去调用。而不要在其它的通讯延迟较高的应用服务器上去远程访问关系数据库系统。
而NoSql由于没有事务,这方面完全不纠结。
但是为什么这些DBA往往都被大公司清理掉了呢?因为他们是传统关系数据库的卫道士,一些系统所需要的“最终一致性”特性需要新的业务观念来实现。所以这里的“其它方法”就是学习最3、4年越来越流行的新思维、新架构。