SqlServer2008快照隔离模式的业务应用
场景:
有200个检测点,每个检测点每天采集5个数据,对表的读写都是随机的(即有可能同时读写),总共有5年的数据。
存储方案A:
| 日期 | 点号 | 类型 | 值 |
| 20120101 | 001 | A | 1.0 |
| 20120101 | 001 | B | 2.0 |
| 20120101 | 001 | C | 3.0 |
存储方案B:
| 日期 | 类型 | 001 | 0002 | 003 | ... |
| 20120101 | A | 1.0 | 1.0 | 1.0 | ... |
| 20120101 | B | 2.0 | 2.0 | 2.0 | ... |
| 20120101 | C | 3.0 | 4.0 | 4.0 | ... |
若采用方案A,所有的点在一个表里,行数就非常多,如果一个点一张表表就太多。扩展数据点时容易一些。
采用方案B,所有点在一个表里,一个点一天5条记录,一天1000条,一年下来也就是30多W条,几年的数据也不到1000W,做好索引查询,查询也不会慢。缺点是扩展数据点需要改表,我们采用预留字段的方式解决。
问题:
1.对某个数据点做跨年计算时,需要更新对应的数据。采用的是按天和类型取出一条删除,更新字段值之后插入,使用了事务处理。
2.同时页面查询该表(需要跟其它表联合),有时会出现“事务与另一个进程被死锁。。。。”异常,后来就在查询时添加了with(nolock)
3.当计算和查询并行时,我有个页面需要把某天的5个类型数据都读出来,因为写时事务加锁了,读的时候使用with(nolock)就没读出来锁定的行,结果是数据不全
解决方案:
开启数据库的快照隔离事务模式,去掉with(nolock)。
参考地址:
http://msdn.microsoft.com/zh-cn/library/vstudio/tcbchxcb.aspx
SqlServer2008快照隔离模式的业务应用的更多相关文章
- 数据库的快照隔离级别(Snapshot Isolation)
隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而不会影响写操作申请的互斥锁(Exclusive Lock),隔离级 ...
- 转:数据库的快照隔离级别(Snapshot Isolation)
数据库的快照隔离级别(Snapshot Isolation) 隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而 ...
- 设计模式---接口隔离模式之门面模式(Façade)
前提:接口隔离模式 在组建构建过程中,某些接口之间直接的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接接口(稳定的),来隔离本来相互紧密关联的接口是一种常见的解决方案. 典型模式: 门面模 ...
- C++设计模式 之 “接口隔离” 模式:Facade、Proxy、Mediator、Adapter
“接口隔离”模式 在组建构建过程中,某些接口之间之间的依赖常常会带来很多问题.甚至根本无法实现.采用添加一层间接(稳定)接口,来隔离本来相互紧密关联的接口是一种常见的解决方案. 典型模式 #Facad ...
- 在 Laravel 5 中使用 Repository 模式实现业务逻辑和数据访问的分离
1.概述 首先需要声明的是设计模式和使用的框架以及语言是无关的,关键是要理解设计模式背后的原则,这样才能不管你用的是什么技术,都能够在实践中实现相应的设计模式. 按照最初提出者的介绍,Reposito ...
- 转:nolock的替代方案-提交读快照隔离[行版本控制]
with(nolock)并意味着没有锁,实际上在查询一张表时,还是有锁,会对对象增加架构锁, 防止表会修改,会对数据库增加共享锁.若使用drop index,则要等到架构锁释放. sql serv ...
- 《设计模式面试小炒》策略和工厂模式替代业务场景中复杂的ifelse
<设计模式面试小炒>策略和工厂模式替代业务场景中复杂的ifelse 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统, ...
- 3D编程模式:依赖隔离模式
大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...
- Windows 2012 R2上搭建IIS管理用户的隔离模式FTP
Windows 2012 R2上搭建IIS管理用户的隔离模式FTP Windows自带的FTP现在可以提供基于非OS用户的管理,这提高了安全性.即使FTP用户名和密码泄露,也不会对操作系统造成进一步的 ...
随机推荐
- ACDC
acdc dcdc电源模块中大功率一般都是开关电源模式的,所以一般输入都是一个较宽的电源范围,体积也相对于变压器要小一些,效率高一些,但是纹波会偏大一些,如何选择就要看电路的需求来选择相应的方案
- iOS - Swift iOS 开发体系
1.iOS 开发技术体系 iOS 开发技术体系图: 层级 主要框架 Cocoa Touch UIKit 等 Media Core Graphics .OpenGl ES.Core Animation ...
- iOS - UISlider
前言 NS_CLASS_AVAILABLE_IOS(2_0) __TVOS_PROHIBITED @interface UISlider : UIControl <NSCoding> @a ...
- JS 拼装代码的HTML onClick方法传递字符串
有时会在JS中拼装HTML代码,这时在HTML中出现的onClick()方法中: 1.出现传递Num型的数据,直接拼装进去即可: 2.可能会出现传递字符串的情况,处理方法比较特殊,如下: a:直接字符 ...
- 小度Wifi_设置
PS:现在我用的小度Wifi驱动的 安装程序的版本为:“XiaoduWiFi140923_M_3.0.9.rar”(保存于“百度云 OsSkill --> 软件安装包 > 小度Wifi__ ...
- bootstrap学习笔记<九>(菜单,按钮。导航基本元素)
有了bootstrap作导航不再麻烦,几个样式,几个标签就能轻松搞定. 下面就来分解学习导航条的制作. 一.首先是下拉菜单 <div class="dropdown"> ...
- mysql 大数据量的处理
insert 1.过滤一段时间内重复的数据2.数据缓存起来,批量写入 select1.使用分区表2.主主复制,连接不同的mysql3.建立索引4.定时求平均值,写入一个新的表中
- 一次tomcat服务器被入侵解决办法
突然tomcat目录下莫名其妙的多了几个war文件,里面内容只有一个index.jsp,打开控制台发现多了几个应用,我可以确定不是我部署上去的,顺着应用访问竟然看到了
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
Android 高手进阶(21) 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明地址:http://blog.csdn.net/xiaanming/article/detail ...
- easyui datagrid 设置列宽
<script> $(document).ready(function () { alert("sdf"); ...