博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  SQL

摘要:事物中的锁简单说就是S共享锁,X排它锁 X锁在所有事物中,一旦加上,持续到COMMIT才释放 未提交读 (READ UNCOMMITTED):读取时候不会加共享锁,直接读取 已提交读(READ COMMITTED):读取时候加S锁,读完立马释放S锁,会在事物完成前就立马释放S锁 可重复读(REPEA 阅读全文

posted @ 2018-10-22 23:30 qianyz 阅读(236) 评论(0) 推荐(0) 编辑

摘要:隔离级别定义事务处理数据读取操作的隔离程度,在SQL Server中,隔离级别只会影响读操作申请的共享锁(Shared Lock),而不会影响写操作申请的互斥锁(Exclusive Lock),隔离级别控制读操作的行为: 在读数据时是否使用共享锁,申请何种类型的锁; 事务持有读锁的时间; 读操作引用 阅读全文

posted @ 2018-10-21 22:39 qianyz 阅读(276) 评论(0) 推荐(0) 编辑

摘要:30分钟全面解析-SQL事务+隔离级别+阻塞+死锁 阅读目录 概述: 一、事务 二、锁 三、阻塞 四、隔离级别 五.死锁 以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化。 本系列主要是针对T-SQL的总结。 【T-SQL基础】01.单表查询-几道sql查询题 阅读全文

posted @ 2018-10-18 11:33 qianyz 阅读(251) 评论(0) 推荐(0) 编辑

摘要:脏读、不可重复读 共享锁、悲观锁 和 事务五种隔离级别一、脏读、不可重复读、幻读1、脏读:脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。 例如: 张三的工资为5000,事务A中把他的工资改为8000,但事务A尚未提交。 与此同时, 事务B正在读取张三的工资,读取到张三的工资为8000。 随后, 事务A发生异常,而回滚了事务。张三的工资又回滚为5000。 最后, 事务B读取到的张三工资为8000的数据即为脏数据,事务B做了一次脏读。2、不可重复读:是指在一个事务内,多次读同... 阅读全文

posted @ 2013-10-23 11:57 qianyz 阅读(422) 评论(0) 推荐(0) 编辑

摘要:IsolationLevel.RepeatableRead 死锁http://www.360doc.com/content/07/0730/15/36588_643135.shtml 阅读全文

posted @ 2013-08-28 21:16 qianyz 阅读(117) 评论(0) 推荐(0) 编辑

摘要:事务的隔离级别2 (TRANSACTION ISOLATION LEVEL)事务的隔离级别SQL Server通过在锁资源上使用不同类型的锁来隔离事务。为了开发安全的事务,定义事务内容以及应在何种情况下回滚至关重要,定义如何以及在多长时间内在事务中保持锁定也同等重要。这由隔离级别决定。应用不同的隔离级别,SQL Server赋予开发者一种能力,让他们为每一个单独事务定义与其他事务的隔离程度。事务隔离级别的定义如下:是否在读数据的时候使用锁读锁持续多长时间在读数据的时候使用何种类型的锁读操作希望读已经被其他事务排他锁住的数据时,怎么办?在这种情况下,SQL Server可以:一直等到其他事务释放 阅读全文

posted @ 2012-08-17 13:40 qianyz 阅读(223) 评论(0) 推荐(0) 编辑

摘要:数据集 DataRow.RowState 属性深入分析RowStateRowVersionAddedCurrent(Default)ModifiedCurrent(Default)OriginalUnchangedCurrent(Default)Original(Default)DetachedProposed(Default)Deleted从不同位置载入 DataRow 后 RowState 的状态修改, 更改, 删除后的 DataRow.RowState 转化使用 AcceptChanges, RejectChanges, SetAdded, SetModified 方法后 DataRow 阅读全文

posted @ 2012-08-17 11:38 qianyz 阅读(283) 评论(0) 推荐(0) 编辑

摘要:datarow.rowstate:当新建一行的时候,状态为Detached,不属于任何表,把它添加到表中后,状态为Added,这时候你修改这条数据,他的状态还是Added, 把它添加到表中后,状态为Added0 如果 这时候你修改这条数据,他的状态还是Added,1 如果 如果再去调用delete(),他的状态又变会Detached,而不是delete状态。2 如果 这个时候调用 acceptch... 阅读全文

posted @ 2010-10-13 20:03 qianyz 阅读(481) 评论(0) 推荐(0) 编辑

摘要:SqlDataAdapter主要有5块内容,其中有四项是利用sqlcommand来完成的,还有一个是映射表用的。SqlDataAdapter对象内用到的对象还是sqlconnection和sqlcommand,用这两个来实现和数据库的交互在读取数据的时候还是用到sqldatareader来读取数据,然后Fill()到Datset中,这其中必然有映射关系,下面来详细说说datatablemappin... 阅读全文

posted @ 2010-10-13 18:48 qianyz 阅读(321) 评论(0) 推荐(0) 编辑

摘要:在RC级别下select ,对满足条件的数据都加S锁,读取一条释放一个锁update,先发select命令来找对应的数据,然后都加X锁,知道事务结束X锁才释放delete 先发select命令来找对应的数据,然后都加X锁,知道事务结束X锁才释放insert 先把数据插入,然后在检查数据完整一致性,如果有问题就回滚select<---- 重复度矛盾------>update<---... 阅读全文

posted @ 2010-10-11 19:01 qianyz 阅读(496) 评论(2) 推荐(0) 编辑

摘要:从数据库读取数据的时候一定要注意数据的类型兼容性就.NET和SQL 来说,数据的兼容性有三个数据类型需要注意, decaimal SQL中的范围比.NET中的要大 datetime .NET中的要比SQL中的精度高, String .NET中和SQL中的长度不一样,因此在获取和这三个数据类型相关的数据的时候,一定要注意不要被数据截断。SQL中的所有数据类型都是可空的,而.NET中只有引用类型是可空... 阅读全文

posted @ 2010-10-11 18:53 qianyz 阅读(403) 评论(0) 推荐(0) 编辑

摘要:sqlcommand主要是通过sqlconnection来发命令的。最常用的是发 select命令,这就要先来说说sqldatareader 的工作机制了:datareader的实现机制是游标,游标的类型有三种:1 静态游标2 键值游标3动态游标三种游标区别如下:静态游标:每当发一条select命令的时候,静态游标会在临时数据库中生成临时表,把选中的数据全都加载到这个临时表,然后用一个指针来指向这... 阅读全文

posted @ 2010-10-11 17:58 qianyz 阅读(1053) 评论(1) 推荐(1) 编辑

摘要:一个 IAM 页在文件中的范围为 4 GB(IAM跟踪分配单元使用的数据库文件的 4 GB 部分中的区,它记录的是一个文件中的4GB部分,即跟踪一个GAM间隔的分配到一个分配单元的分区。一个IAM页(索引分配页)跟踪单个文件里将近4GB的空间,以4GB为界。这4GB的数据称为“GAM间隔”。一个IAM页跟踪属于单个实体的特定GAM间隔内的扩展盘区),与 GAM 或 SGAM... 阅读全文

posted @ 2010-10-09 17:07 qianyz 阅读(964) 评论(0) 推荐(1) 编辑

摘要:一、数据表的基本结构为认识索引工作原理,首先有必要对数据表的基本结构作一次全面的复习。SQLS 当一个新表被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机保存,当一个8K用完的时候, SQLS指针会自动分配一个8K的空间。这里,每个8K空间被称为一个数据页(Page),又名页面或数据页面,并分配从0-7的页号,每个文件的第0页记录引导信息,... 阅读全文

posted @ 2010-10-09 14:16 qianyz 阅读(327) 评论(1) 推荐(0) 编辑

摘要:MSSQL优化教程之1.4 其他几种类型的页面上一次只是讲了讲普通数据页面,后来自己回想一下,应该跟大家讲讲其他类型的页面,作为一个知识体系贯穿起来。 全局分配映射表 (GAM) GAM 页记录已分配的区。每个 GAM 包含 64,000 个区,相当于近 4 GB 的数据(每个区占用一位,每八个区占用一个字节,每个页大概可用字节为8000个字节,所以能管理4GB的数据)。GAM 用一个位来表示所涵... 阅读全文

posted @ 2010-10-08 20:47 qianyz 阅读(252) 评论(0) 推荐(44) 编辑

摘要:SQL Server中的页是最基本的数据单位组成,他有8KB,也就是8192个字节(mssql7.0以前是一个页面2KB),而sql server的一个页面,由页头,数据行,和slot table组成(行偏移的位置的记录数组。页头页头是一个固定的96字节的大小,他是一个页面的元数据,记载与本页相关的许多信息,具体的参数,大家可以参看我很久以前写的一篇文章,SQL server数据页页头参数列表,这... 阅读全文

posted @ 2010-10-08 20:33 qianyz 阅读(1410) 评论(0) 推荐(1) 编辑

摘要:由于需要给同事培训数据库的索引知识,就收集整理了这个系列的博客。发表在这里,也是对索引知识的一个总结回顾吧。通过总结,我发现自己以前很多很模糊的概念都清晰了很多。 不论是聚集索引,还是非聚集索引,都是用B+树来实现的。我们在了解这两种索引之前,需要先了解B+树。如果你对B树不了解的话,建议参看以下几篇文章: BTree,B-Tree,B+Tree,B*Tree都是什么 http://blog.cs... 阅读全文

posted @ 2010-10-08 20:19 qianyz 阅读(178) 评论(0) 推荐(0) 编辑

摘要:SQLserver每个数据页面的页头都是固定的96字节,另外就是真正的数据行以及行偏移矩阵。掌握页面元数据也是对SQLserver内部组织的一个了解。其中nextpage 和 prepage参数只有在相应表有聚集索引的时候,才会将页面以链表的形式组织起来,不然,仍然是靠的表扫描(先扫描IAM页)LSN用于事务管理行偏移矩阵是用作跟踪数据在磁盘上的真正位置,以及与逻辑位置的对应关系。顺便说一下即使表... 阅读全文

posted @ 2010-10-08 20:08 qianyz 阅读(338) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示