大家好,欢迎回到性能调优培训.上个星期我通过讨论悲观并发模式拉开了第5个月培训的序幕.今天我们继续,讨论下乐观并发模式(Optimistic Concurrency). 行版本(Row Versioning) 乐观并发模式自SQL Server 2005后引入,并基于行版本控制(Row Versioning)原则.行版本控制背后的想法是读操作(SELECT查询)不再需要获得共享锁(Shared Lock).不去等待直到成功获得共享锁(Shared Lock),读操作是返回行前一个提交的版本.老的…
默认情况下, MySQL的Innodb事务隔离级别是重复读 repeatable read, SELECT @@GLOBAL.tx_isolation, @@tx_isolation;REPEATABLE-READ    REPEATABLE-READ 进行以下测试, 同时开两个session, S1 和 S2, 都将autocommit关掉 ; 测试使用的是一张简单的表, 只有一行数据 CREATE TABLE `t1` ( `v1` ) ', `v2` ) ', `version` medi…
大家好,欢迎回到性能调优培训.今天标志着第5个月培训的开始,这个月我们会谈论SQL Server里的锁.阻塞和死锁(Locking, Blocking, and Deadlocking). SQL Server提供悲观和乐观并发控制模式,它们用来定义并发查询的执行.这期我会给你讲解悲观并发控制模式里各种隔离级别概况,下周我会进一步介绍自SQL Server 2005起引入的乐观隔离级别情况. 悲观隔离级别(Pessimistic Isolation Levels) 悲观隔离级别意味着读查询(SE…
大家好,这是我在博客园写的第一篇博文,之所以要开这个博客,是我对MS SQL技术学习的一个兴趣记录. 作为计算机专业毕业的人,自己对技术的掌握总是觉得很肤浅,博而不专,到现在我才发现自己的兴趣所在,于是我通过网络找了各种MS SQL技术的相关文档,总觉得讲得比较干涩,没有一个系统性,今年3月底我无意浏览到一个网站提供免费的性能调优的半年培训(http://www.sqlpassion.at/academy/performance-tuning-training-plan/),网站所有人会在每周往…
Optimistic concurrency control https://en.wikipedia.org/wiki/Optimistic_concurrency_control Optimistic concurrency control (OCC) is a concurrency control method applied to transactional systems such as relational database management systems and softw…
大家好,欢迎回到性能调优培训.今天讨论SQL Server里的死锁(Deadlocking),第5个月的培训就结束了.当2个查询彼此等待,没有查询可以继续它的工作就会发生死锁.第一步我会概括介绍下SQL Server如何处理死锁.最后我会向你展示下SQL Server里一些特定死锁,还有你如何避免并解决它们. 死锁处理(Deadlock Hanging) 死锁的好处是SQL Server会自动检测并解决它们.为了解决死锁,SQL Server需要回滚最便宜的2个事务.在SQL Server上下文…
在今天的性能调优培训里我们讨论下TempDb——SQL Server的公共厕所,在SQL Server里我是这样描述它的.我们的每个人都会经常使用TempDb.有些人直接使用它,有些人不直接使用它.今天我想给你概括介绍下SQL Server里TempDb的用法,另外我会给你为了更好的性能,如何配置TempDb的一些最佳实践. TempDb用法 我们的每个人使用TempDb.这是我们要接受的事实.因此按需配置TempDb非常重要——即为了获得良好的性能.TempDb存储下列3类对象: 用户对象(U…
原创地址:http://www.cnblogs.com/jfzhu/p/4009918.html 转载请注明出处   (一)为什么需要并发控制机制 并发控制机制是为了防止多个用户同时更改同一条数据,也可以防止一个用户在更改数据的同时造成另一个用户看到"过期"的数据.下面看一个例子就明白了. John和Marry有一个联合银行帐户,帐户的余额是$1000,John向帐户里存入了$500,Marry取走了$500,如果没有并发控制,John最后看到的余额是$1500,而Marry看到的帐户…
一.背景 我们知道,为了防止并发而出现脏读脏写的情况,可以使用Lock语句关键字,这属于悲观并发控制的一种技术,,但在分布式站点下,锁的作用几乎不存在,因为虽然锁住了A服务器的实例对象,但B服务器上的锁是不知道的A服务器上锁的情况的,所以,面对分布式站点.单一数据库这种架构,我们可以使用EntityFramework的乐观并发控制来解决这个问题,EF对并发控制有不管控和乐观并发控制两种,默认情况是不管控,但EF不支持悲观并发. lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区.…
处理冲突 当我们使用 index API 更新文档 ,可以一次性读取原始文档,做我们的修改,然后重新索引 整个文档 . 最近的索引请求将获胜:无论最后哪一个文档被索引,都将被唯一存储在 Elasticsearch 中.如果其他人同时更改这个文档,他们的更改将丢失. 很多时候这是没有问题的.也许我们的主数据存储是一个关系型数据库,我们只是将数据复制到 Elasticsearch 中并使其可被搜索. 也许两个人同时更改相同的文档的几率很小.或者对于我们的业务来说偶尔丢失更改并不是很严重的问题. 但有…