1、和oracle相比,SQLSERVER和DB2的锁机制就是有点先天不足,譬如DB2会有locklist和lockmax这两个参数来控制锁在内存中的大小,以及什么时候由行锁升级成表所,sqlserver的锁和DB2有些类似,都是放在内存中的,但是oracle放在block的标志位的上的设计,在2000~3000高并发的情况下的优势会非常大,死锁,锁超市就大大减少。这点对并发影响很大(这里其实还有很多的东西,我只是粗略地说一下)。
2、sqlserver每条并发的sql语句都会打开一个数据库连接,而oracle的每条并发语句死通过一个oracle conncet建立多个oracle session,这个在企业级应用的时候也会让oracle在并发上占据优势。以后两点可以通过改进应用,优化程序来改进,从某种角度来说,读写分离也可以有效的降低上面两点的不利影响。sqlserver的集群没用过,不过听朋友说不如oracle,这个有待考证,sqlserver的事务分发,读写分离,存在一定的安全性隐患,不过确实可以有效的提高性能。
3、高并发情况下的sql的执行,执行计划就比较的关键。sqlserver的优化器逐渐在进化,可以用Profiler来跟踪查询,得到查询所需的时间,找出SQL的问题所在;用索引优化器优化索引。此外,统计数据刷新也比较关键。如果并发高,但是数据量不大就使用同步刷新的好了。
4、如果不能提高服务器的性能,那么读写分离,和使用不同的隔离级别那就是有效的手段。包括使用快照隔离级别,使用replication同步技术,或者建立snapshot database读写分离。使用采用row-versiong based的snapshot 事务隔离层级,在数据查询,尽量使用 READ UNCOMMITTED 事务隔离级别, 都可以减少锁的开销。SSD硬盘.......两连天有个朋友的SSD硬盘坏掉了......数据库都挂了。。SSD硬盘的读取速度是毫无疑问的,但是它的写操作寿命还有待考证,总是让我感觉不放心,但是用来做读写分离的时候还是很有用的。
如果有小伙伴想学习大数据知识的,可以加下图片下方的交流群,群里有很多大数据的资料可以下载学习,还有大神在群里可以一起交流讨论