摘要:
一、前言SQL Server 2005 引入了一种称为 XML 的本机数据类型。用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列;此外,还允许带有变量和参数。为了更好地支持 XML 模型特征(例如文档顺序和递归结构),XML 值以内部格式存储为大型二进制对象 (BLOB)。用户将... 阅读全文
随笔分类 - SQL Server
SQL SERVER 2005/2008 中关于架构的理解(二)
2013-12-24 17:03 by 渔者, 446 阅读, 收藏,
摘要:
本文上接SQL SERVER 2005/2008 中关于架构的理解(一)架构的作用与示例 用户与架构(schema)分开,让数据库内各对象不再绑在某个用户账号上,可以解决SQLSERVER2000及以前版本中“用户离开公司"问题,也就是在拥有该对象的用户离开公司,或离开该职务时,不必要大费周章地更改该用户所有的对象属于新的用户所有。另外,也可让DBA在安装某个套装软件时,设置该套装软件所用的数据库对象都属于某个特定的架构,容易区别。也就是说,在单一数据库内,不同部门或目的的对象,可以通过架构区分不同的对象命名原则与权限。 在SQLServer2005/2008中,架构独立于创建它们的数据库用户 阅读全文
SQL SERVER 2005/2008 中关于架构的理解(一)
2013-12-24 17:02 by 渔者, 192 阅读, 收藏,
摘要:
SQLSERVER2005/2008中关于架构的理解(一) 在一次的实际工作中碰到以下情况,在SQLSERVER2008中,新建了一个新用户去访问几张由其他用户创建的表,但是无法进行查询,提示“对象名'CustomEntry'无效。”。当带上了架构名称之后(如“cus.CustomEntry”),却又能查询到表中的数据了,但是查询语句是已经写死在了应用程序中的,如果要进行更改,就有很大的工作量,这是一件很郁闷的事情。于是想从数据库层面上解决此问题,在查询了大量的资料之后,对于SQLSERVER中的架构有所了解,并解决以上问题。 下面来说说,自己对SQLSERVER中架构的理解, 阅读全文
SQL SERVER 查询性能优化——分析事务与锁(五)
2013-12-24 17:01 by 渔者, 227 阅读, 收藏,
摘要:
SQL SERVER 查询性能优化——分析事务与锁(一)SQL SERVER 查询性能优化——分析事务与锁(二) SQL SERVER 查询性能优化——分析事务与锁(三)上接SQL SERVER 查询性能优化——分析事务与锁(四)(四)未检测到的分布式死锁 某应用程序持有数据库资源,开启事务之后又与用户交互,而在与用户的交互过程中出现了错误,导致数据库资源迟迟不能释放。SQLSERVER2005/2008动态管理视图sys.dm_exec_requests提供相关信息,该SESSION_ID的status字段值为“sleeping”,wait_type为“NULL”值。如果是SQL 2005则 阅读全文
SQL SERVER 查询性能优化——分析事务与锁(四)
2013-12-24 17:00 by 渔者, 311 阅读, 收藏,
摘要:
上接SQL SERVER 查询性能优化——分析事务与锁(三)二、死锁的原因及相关处理 死锁的原因很多,尤其是前端应用程序没有合理的使用事务,或者对错误处理不当而导致事务长期持有而没有关闭。接下来讲讲最常见的几种死锁情况,并提供可能的解决方法。1.费时的查询事务2.不正确的事务或事务隔离等级设置3.事务未正确处理4.未检测到的分布式死锁5.锁定数据粒度太高或太低6.CompileBlocking(一)费时的查询事务 当查询或事务所花的时间较长时,可由SQLSERVER2005/2008动态管理视图sys.dm_exec_requests提供相关信息(也可观察sysprocesses系统视图),如 阅读全文
SQL SERVER 查询性能优化——分析事务与锁(三)
2013-12-24 16:59 by 渔者, 196 阅读, 收藏,
摘要:
上接SQL SERVER 查询性能优化——分析事务与锁(二)接下来看看SP_WHO2这个系统存储过程,如果你查询这个系统存储过程的源代码,就可以发现这个系统存储过程是整理master.sys.sysprocesses系统视图中的内容。在此用sp_who2来说明一下。第一步,在查询分析器中执行例二,例三代码。(就是上一篇文章SQL SERVER 查询性能优化——分析事务与锁(二)中的示例)--例二第二步,再打开一个查询分析器界面,在此界面中输入execsp_who2,如下图,在此界面中你可以很容易的观察到锁与被锁的关联,看到进程“56”被“53”锁住。Use testGoBegin tranup 阅读全文
SQL SERVER 查询性能优化——分析事务与锁(二)
2013-12-24 16:58 by 渔者, 258 阅读, 收藏,
摘要:
上接SQL SERVER 查询性能优化——分析事务与锁(一)第二步,通过SQL语句分析锁定情况由于SQLSERVER2008相比SQLSERVER2005中的“活动监视器”有了比较大的改变,所以下而我们通过SQL语句进行分析,使用SQL语句进行分析需要通过SP_WHO、SP_WHO2、SP_LOCK等系统存储过程、Master.sys.sysprocesses系统视图,或从SQL2005(2008)新提供的动态视图管理(DMV)sys.dm_exec_session、sys.dm_tran_locks等获取相关信息。通过master.sys.sysprocesses视图找出最初锁住资源及导致后 阅读全文
SQL SERVER 查询性能优化——分析事务与锁(一)
2013-12-24 16:57 by 渔者, 231 阅读, 收藏,
摘要:
一、使用工具观察与分析数据库中锁信息 对于并发系统、对于有大量读写数据库操作的业务系统等,当多人同时访问数据库时,最复杂的情况之一就是大量的事务与资源纠缠在一起,相互被锁而彼此等待,也称为死锁。当数据库中出现很多很多锁时,系统瞬间就无法提供正常服务。此时观察系统资源的使用情况,会发现CPU使用率不高,内存占用量也不高,还有很多未使用的内存,网络带宽也充足,硬盘也不繁忙,通过数据库管理工具查询的话,SQLSERVER中的数据也正常无误,但是使用系统的用户访问此数据库时却要需要等很多久很久,更多的就出现连接超时,数据库无响应。 此现象类似高速公路上有大量的车辆进入,而在收费口却只开了一个、二个。造 阅读全文
SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)
2013-12-24 16:56 by 渔者, 199 阅读, 收藏,
摘要:
SQL SERVER的锁机制(一)——概述(锁的种类与范围)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)本文上接SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)六、各种事务隔离级别发生的影响修改数据的用户会影响同时读取或修改相同数据的其他用户。即这些用户可以并发访问数据。如果数据存储系统没有并发控制,则用户可能会看到以下负面影响:·未提交的依赖关系(脏读)·不一致的分析(不可重复读)·幻读(一)脏读:例:张某正在执行某项业务,如下:begin traninsert tbUnRead select 3,'张三' 阅读全文
SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)
2013-12-24 16:55 by 渔者, 200 阅读, 收藏,
摘要:
接上文SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)五、锁与事务隔离级别事务隔离级别简单的说,就是当激活事务时,控制事务内因SQL语句产生的锁定需要保留多入,影响范围多大,以防止多人访问时,在事务内发生数据查询的错误。设置事务隔离级别将影响整条连接。SQLServer数据库引擎支持所有这些隔离级别:·未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据)·已提交读(数据库引擎的默认级别)·可重复读·可序列化(隔离事务的最高级别,事务之间完全隔离)SQLServer还支持使用行版本控制的两个事务隔离级别。一个是已提交读隔离 阅读全文
SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)
2013-12-24 16:54 by 渔者, 179 阅读, 收藏,
摘要:
二、完整的锁兼容性矩阵(见下图)对上图的是代码说明:见下图。三、下表列出了数据库引擎可以锁定的资源。名称资源缩写编码呈现锁定时,描述该资源的方式说明数据行RIDRID9文件编号:分页编号:Slot编号用于锁定堆中的单个行的行标识符。索引键KEYKEY76字节哈希值索引中用于保护可序列化事务中的键范围的行锁。分页PAGEPAG6文件编号:分页编号数据库中的8KB页,例如数据页或索引页。范围EXTENTEXT8文件编号:范围的第一个分页的编号一组连续的八页,例如数据页或索引页。HoBT堆或B树。用于保护没有聚集索引的表中的B树(索引)或堆数据页的锁。数据表TABLETAB5数据表ID(OBJID字 阅读全文
SQL SERVER的锁机制(一)——概述(锁的种类与范围)
2013-12-24 16:53 by 渔者, 266 阅读, 收藏,
摘要:
SQL SERVER的锁机制系列:SQL SERVER的锁机制(一)——概述(锁的种类与范围)SQL SERVER的锁机制(二)——概述(锁的兼容性与可以锁定的资源)SQL SERVER的锁机制(三)——概述(锁与事务隔离级别)SQL SERVER的锁机制(四)——概述(各种事务隔离级别发生的影响)锁定:通俗的讲就是加锁。锁定是MicrosoftSQLServer数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制。定义:当有事务操作时,数据库引擎会要求不同类型的锁定,如相关数据行、数据页或是整个数据表,当锁定运行时,会阻止其他事务对已经锁定的数据行、数据页或数据表进行操作。只有在当前 阅读全文
SQL语句练习实例之十——SQL SERVER 行转列的性能测试
2013-12-24 16:52 by 渔者, 370 阅读, 收藏,
摘要:
在数据库设计时,有时候为了实现数据规范化的目的,会将属于同一个人的属性记录值改用多条记录的方式来存储,显示时又希望将多个属性数据合并成一行来显示,这就是行转列。例如:下图的成绩记录表。那么行转列的效率又将如何呢?我试了以下三种方式进行行转列的测试。测试数据表中的记录数量为120万条,字段为10个,测试下来感觉性能还不错。一、第一种方式(SQL 2000以后的版本)--总计120万记录SELECTwbook_no , MAX(CASEWHEN[COP_G_NO] ='60174257'THENAR END) "60174257", MAX(CASEWHEN[C 阅读全文
SQL Server 查询性能优化——索引与SARG(四)
2013-12-24 16:46 by 渔者, 187 阅读, 收藏,
摘要:
上接SQL Server 查询性能优化——索引与SARG(三)说明:下文中所说的创建索引都是SQL Server 查询性能优化——索引与SARG(一)中开头部分所说明的索引列表中的索引。 例:下面表格中说的索引1(聚集索引)和索引5(非聚集索引)4: 小心使用OR操作符 如上文SQL Server 查询性能优化——索引与SARG(三)中的例子中WBK_PDE_LIST_ORG_HISTROY表创建了索引2,即在[QTY_1]字段建立索引,通过该索引.就可以从大量记录中.快速找出符合记录的记录(如上文中的“2 请不要进行负向查询”中表格中的序号2,逻辑读取43次,执行成本0.121935),再在 阅读全文
SQL Server 查询性能优化——索引与SARG(三)
2013-12-24 16:45 by 渔者, 262 阅读, 收藏,
摘要:
上接SQL Server 查询性能优化——索引与SARG(二)2 请不要进行负向查询除了不应该对字段数据进行计算外,非SARG语句的格式语句还包含在WHERE条件子句中,使用负向查询操作符。如NOT、!=、、!>、!312有主键(索引1,索引2)3表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取1314次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。13141.03687无主键(索引2)4表'WBK_PDE_LIST_ORG_HISTROY'。扫描计数1,逻辑读取1306次,物理读取0次,预读 阅读全文
SQL Server 查询性能优化——索引与SARG(二)
2013-12-24 16:42 by 渔者, 231 阅读, 收藏,
摘要:
接 SQL Server 查询性能优化——索引与SARG(一)对于非SARG语句,SQLSERVER必须评估每一条记录以决定它是否符合WHERE子句的条件。所以索引对于采用非SARG条件的查询通常没什么用处。而通过非SARG语句通常包含以下操作:NOT、!=、、!>、!SELECT * FROM [WBK_PDE_LIST_ORG_HISTROY] where wbook_no='BE404942450020' and g_no='11844' 1) 例一与例二查询的IO读写数 表'WBK_PDE_LIST_ORG_HISTROY'。扫描计 阅读全文
SQL Server 查询性能优化——索引与SARG(一)
2013-12-24 16:41 by 渔者, 425 阅读, 收藏,
摘要:
这一篇文章修修改改,已经写了很久了,还是感觉好像自己没讲清楚,鉴于本人水平,就先这样写吧,待本人水平提高之后,再进行修补。在写作的过程也学习到了,SQL查询优化程序也并不一定会使用查询参数中字段的相关索引,而是根据查询数据量的多少而产生的查询成本,来决定是使用查询参数中的字段索引,还是使用聚集索引或全表扫描。中心思想就是关于SQL语句的“查询参数”(SARG)与索引的使用。符合SARG格式的数据肯定会使用到相应的索引呢?先给出答案,不是。例如:Select*fromWBK_PDE_LIST_ORGwherecop_g_no='11000',假设在cop_g_no上建立了非聚集索 阅读全文
SQL Server 查询性能优化——创建索引原则(二)
2013-12-24 15:51 by 渔者, 260 阅读, 收藏,
摘要:
在昨天的SQL Server 查询性能优化——创建索引原则(一)主要介绍了一下原理,今天是一些主要的原则,及对已经创建好的索引检测。三:索引的建立原则 一般来说,建立索引要看数据使用的场景,换句话来说哪些访问数据的SQL语句是常用的,而这些语句是否因为缺少索引(也有可能是索引过多)变的效率低下。但绝不是所有的SQL语句都要建立索引,如果所有的SQL语句都建立索引,那么可能导致建立过多的索引。 我碰到过每秒钟新增记录超过千条的案例,虽然该数据表仅有聚集索引,但因为已存在的键值字段的值和新增数据键值字段的值并不是按顺序递增,每次新增记录时,肯定造成整体数据行的重新排列。在移掉聚集索引后,性... 阅读全文
SQL Server 查询性能优化——创建索引原则(一)
2013-12-24 15:48 by 渔者, 398 阅读, 收藏,
摘要:
索引是什么?索引是提高查询性能的一个重要工具,索引就是把查询语句所需要的少量数据添加到索引分页中,这样访问数据时只要访问少数索引的分页就可以。但是索引对于提高查询性能也不是万能的,也不是建立越多的索引就越好。索引建少了,用WHERE子句找数据效率低,不利于查找数据。索引建多了,不利于新增、修改和删除等操作,因为做这些操作时,SQLSERVER除了要更新数据表本身,还要连带地立即更新所有的相关索引,而且过多的索引也会浪费硬盘空间。因此要建得恰到好处,这就需要经验了。一:索引的基本目的 索引的基本目的是在大量数据中找寻少量数据。你可以想像一下,若一本书有700页,就像数据表有700个数据页,而索. 阅读全文
SQL Server 查询性能优化——覆盖索引(二)
2013-12-24 15:47 by 渔者, 359 阅读, 收藏,
摘要:
在SQLServer查询性能优化——覆盖索引(一)中讲了覆盖索引的一些理论。 本文将具体讲一下使用不同索引对查询性能的影响。 下面通过实例,来查看不同的索引结构,如聚集索引、非聚集索引、组合索引等来查看相同的SQL语句查询的不同性能例一:没有任何索引的查询访问 1.表的碎片情况: 2.SQL查询语句与查询执行计划成本--要求返回IO统计,也就是数据页访问的数量SET STATISTICS IO ON--没有任何索引情况下的数据页访问数量SELECT [WBOOK_NO] ,[COP_G_NO] ,[G_NO] ,[CODE_T] ... 阅读全文
浙公网安备 33010602011771号