摘要: 这篇文章主要和大家讨论几乎所有人都熟悉,但不少人又陌生的一条select语句。不知道大家有没有想过到底是什么东西让SQLServer能理解我们写的select。这中间到底发生了什么,是不是有过冲动想去了解。至少我曾经冲动想去了解,但当时主要在研究CLR以及webform相关知识。后来主要精力放在研究SQLserver内部机制,今天就给大家介绍下这条语句。 一、范例数据库脚本 create database Test go alter database Test set recovery simple go use Test go create table Test ( ID int... 阅读全文
posted @ 2012-01-04 21:01 qanholas 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 本来是打算先写SQLServer历史的,不过感觉写那部分内容比较难还需要多查些资料。于是调整了下顺序写下简单的Insert语句。数据库结构还是采用上一篇的结构。具体查看上一篇文章擦亮自己的眼睛去看SQLServer之简单Select。今天讨论的语句也比较简单,Insert语句。 一、Insert脚本 insert into Test([Name]) values('xiaojun') 没什么好说的,因为想写这样的语句太简单。 二、 语句分析 这条语句到底发生了什么呢?假设读者已经知道了SQLServer整体架构或者已经阅读过这个系列第一篇文章。当这条语句被可靠的传递到关... 阅读全文
posted @ 2012-01-04 20:59 qanholas 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 这几天看了下范伟主演的<<跟踪孔令学>>,再一次欣赏了范伟精湛的演技特别是那种憨厚的表情。看完后,让我想起了SQLServer中的跟踪与反跟踪技术。觉得这部分内容值得写一篇文章和大家分享分享。了解SQLServer跟踪技术能让我们比较简单的在运行时实时的获取SQLServer的内部运作。这种获取方式比我们去使用跟踪标志、动态管理视图等来的方便简单的多。说到跟踪,很多人会想起SQL Profiler。SQL Profiler仅仅是一个GUI,SQL Trace才是本质。SQL Trace是构建服务器跟踪和Profiler的基础。如果你了解到这点,那你就会毫不犹豫的在生产环 阅读全文
posted @ 2012-01-04 20:57 qanholas 阅读(733) 评论(1) 推荐(1) 编辑
摘要: 在谈谈SQLServer的锁机制之前,来思考以下这个场景:当你在酷暑的时候骑着自己的小车往目的地行走时,路上连续遇到几个时间很长的红灯,是不是很郁闷?有时候你可能实在受不了闯了个红灯,其实在大部分情况下问题不大,如果通行的汽车很多那就不好说了。因为不遵守规则的人太多,都为了达到目的去走捷径,不愿意等待。这样才有了交警。交警的作用就是维护这些红绿灯的规则。这些红绿灯就像锁一样,锁住或延长你去目的地的时间。但是如果没有交警大家又不自由遵守红绿灯规则会导致什么呢?大家想想都知道。 这个系列的一篇文章中提供的事务管理器中有个锁管理器就是这里的交警。它维护着SQLServer中的锁。前段提到的大部分情. 阅读全文
posted @ 2012-01-04 20:26 qanholas 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 跟踪标志说明260打印有关扩展存储过程动态链接库 (DLL) 的版本控制信息。有关__GetXpVersion()的详细信息,请参阅创建扩展存储过程。作用域:全局或会话1204返回参与死锁的锁的资源和类型,以及受影响的当前命令。作用域:仅全局1211基于内存不足或基于锁数禁用锁升级。SQL Server 数据库引擎不会将行锁或页锁升级到表锁。使用此跟踪标志可生成过多的锁数目。这样会降低数据库引擎的性能,或因为内存不足而导致 1204 错误(无法分配锁资源)。有关详细信息,请参阅锁升级(数据库引擎)。如果同时设置了跟踪标志 1211 和 1224,则 1211 优先于 1224。但是,由于在所有 阅读全文
posted @ 2012-01-04 20:22 qanholas 阅读(877) 评论(0) 推荐(0) 编辑
摘要: 例子:SET TRANSACTION ISOLATION LEVEL READ COMMITTED;BEGIN TRANSACTION; SELECT * FROM User2行版本控制隔离:优势使用行版本控制的隔离级别具有以下优点:· 读取操作检索一致的数据库快照。· SELECT 语句在读取操作过程中不锁定数据(读取器不阻塞编写器,编写器也不阻塞读取器)。· SELECT 语句可以在其他事务更新行时访问最后提交的行值,而不阻塞应用程序。· 死锁的数量减少。· 事务所需的锁的数量减少,这减少了管理锁所需的系统开销。· 锁升级的次数减 阅读全文
posted @ 2012-01-04 19:50 qanholas 阅读(2569) 评论(0) 推荐(0) 编辑
摘要: --认清SQL_Server_2005的基于行版本控制的两种隔离级别--By:zc_0101 Date:2010-03-31--快照隔离级别(snapshot)和已提交读快照隔离级别(readcommittedsnapshot)--特点:在这两种隔离级别下,读取数据时不再请求共享锁,而且永远不会与修改进程的数据发生冲突,如果请求的--行被锁定(例如正在被更新),SQL_Server会从行版本存储区返回最早的关于该行的记录(SQL_server会在--更新时将之前的行数据在tempdb库中形成一个链接列表,当然目前我没有搞清楚之前的数据到底存到了那里)--这两个快照提供了乐观的并发模型--说明: 阅读全文
posted @ 2012-01-04 17:51 qanholas 阅读(780) 评论(1) 推荐(0) 编辑
摘要: 对象①锁:每条SQL语句②隔离:事务锁①并发问题丢失更新未确认的读取(脏读)不一致的分析(非重复读):多次读取相同的数据(行)不一致(其他用户更改update)幻像读:多次读取有不存在和新增的数据(其他用户插入insert或删除delete)隔离级别隔离级别脏读不可重复读取幻像说明未提交读(readuncommitted)是是是如果其他事务更新,不管是否提交,立即执行提交读(readcommitted默认)否是是读取提交过的数据。如果其他事务更新没提交,则等待可重复读(repeatableread)否否是查询期间,不允许其他事务update可串行读(serializable)否否否查询期间,不 阅读全文
posted @ 2012-01-04 17:03 qanholas 阅读(3379) 评论(0) 推荐(2) 编辑
摘要: 存储过程:SET Transaction Isolation Level Read语法的四种情况这几天一直在弄存储过程,现在在这里跟大伙共享下资料:SET Transaction Isolation Level Read UNCOMMITTED使用这句东东呢可以分为四种情况,现在就在这里逐一介绍:第一种情况:READ COMMITTED这句的作用是:指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。第二种情况:READ UNCOMMITTED 这句的作用是:执行脏读或0级隔离锁定,这表示不发出共享... 阅读全文
posted @ 2012-01-04 16:10 qanholas 阅读(39058) 评论(0) 推荐(8) 编辑
点击右上角即可分享
微信分享提示