铭轩同学

铭轩,为自己代言!

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

2015年5月8日

摘要: 计划缓冲的基本目的是通过重用执行计划来改进性能。因为,确认执行计划确实可重用很重要。因为即席查询的计划可重用性效率低下,所以一般建议尽可能依赖预定义工作负载技术。为了确保计划缓冲的高效实用,遵循以下建议。明确地参数化查询的可变部分;使用存储过程实现业务功能;使用sp_executesql避免存储... 阅读全文
posted @ 2015-05-08 21:12 铭轩同学 阅读(128) 评论(0) 推荐(0) 编辑

摘要: 查询计划hash和查询hash 在SQL Server 2008中引入的围绕执行计划和缓冲的新功能被称为查询计划hash和查询hash。这是使用针对查询或查询计划的算法来生成二进制hash值的二进制对象。 可以从sys.dm_exec_query_stats或sys.dm_exec_reques... 阅读全文
posted @ 2015-05-08 21:11 铭轩同学 阅读(201) 评论(0) 推荐(0) 编辑

摘要: 当查询被提交时,SQL Server检查过程缓冲中匹配的执行计划,如果没有找到,SQL Server执行查询编译和优化以生成新的执行计划。 如果执行计划存在于缓冲中,它在私有的执行上下文中重用,这节约了CPU的编译和优化周期。 具有不同过滤条件的相同查询提交到SQL Server时,如:SE... 阅读全文
posted @ 2015-05-08 21:10 铭轩同学 阅读(146) 评论(0) 推荐(0) 编辑

摘要: 一、执行计划缓冲 优化器生成的执行计划保存在SQL Server内存池中的一个特别部分,被称为计划缓冲或过程缓冲。过程缓冲是SQL Server缓存的一部分。在缓冲中保存计划可使SQL Server避免在重新提交相同的查询时再次通过整个查询优化过程运行。SQL Server支持不同的技术,如:计划... 阅读全文
posted @ 2015-05-08 21:09 铭轩同学 阅读(110) 评论(0) 推荐(0) 编辑

摘要: SQL Server使用许多技术来优化资源消耗:基于语法的查询优化;无用计划匹配以避免对简单查询的深度优化;根据当前分布统计的索引和连接策略;多阶段的查询优化以控制优化开销;执行计划缓冲以避免重新生成执行计划; 以上技术按以下顺序执行:解析器;代数化器;查询优化器;执行计划生成,缓冲和hash... 阅读全文
posted @ 2015-05-08 21:08 铭轩同学 阅读(204) 评论(0) 推荐(0) 编辑

摘要: 1、创建统计语法:CREATE STATISTICS statistics_name ON { table_or_indexed_view_name } ( column [ ,...n ] ) [ WHERE ] [ WITH [ [ FULLSCAN ... 阅读全文
posted @ 2015-05-08 21:05 铭轩同学 阅读(171) 评论(0) 推荐(0) 编辑

摘要: SQL Server允许用户手工地控制单独数据库中的统计维护。SQL Server的4个主要的控制紫铜统计的维护的配置如下:在无索引的列上新建统计(自动创建统计);更新现有统计(自动更新统计);用于收集统计的采样度;现有统计的异步更新(自动异步更新统计); 可以在数据库级别(所有表上的所有索引... 阅读全文
posted @ 2015-05-08 21:04 铭轩同学 阅读(170) 评论(0) 推荐(0) 编辑

摘要: 统计是一组存储为柱状图的信息。柱状图是显示数据落入不通分类中的频率的一种统计结构。SQL Server存储的柱状图包括多大200行的列和索引键(或多列索引键的第一列)的数据分布采样。在两个连续采样值之间的索引键值范围上的信息被称为步骤。这些步骤由200个存储值之间的不通大小间隔组成。 一个步骤... 阅读全文
posted @ 2015-05-08 21:03 铭轩同学 阅读(101) 评论(0) 推荐(0) 编辑

摘要: 非索引列上的统计 有时候,可能在连接或过滤条件中的列上没有索引。即使对这种非索引列,如果查询优化器知道这些列的数据分布(统计),它也很可能做出最佳的选择。 除了索引上的统计,SQL Server可以在没有索引的列上建立统计。即使不是索引列,当你开启了SQL Server自动创建统计功能,SQL ... 阅读全文
posted @ 2015-05-08 21:02 铭轩同学 阅读(130) 评论(0) 推荐(0) 编辑

摘要: 一、索引在查询优化中的角色 SQL Server的查询优化器是基于开销的优化器、它通过确认选择性、数据的唯一性以及过滤数据(通过WHERE或JOIN子句)所使用的列来决定最佳的数据访问机制。统计与索引一同存在,但是它们也作为断言的一部分存在于没有索引的列上。 作为谓词引用的列中数据分布的最新信息... 阅读全文
posted @ 2015-05-08 21:01 铭轩同学 阅读(121) 评论(0) 推荐(0) 编辑

摘要: 为了改进性能,分析重编译的起因很重要。往往,重编译可能并不需要,可以避免它以改进性能。了解导致重编译发生的不同条件有助于评估重编译的起因,并决定在重编译不必要时避免它的方法。 存储过程重编译在以下情况下发生:存储过程语句中引用的常规表、临时表或视图的架构变化。架构变化包括表的元数据或表上索引的... 阅读全文
posted @ 2015-05-08 18:16 铭轩同学 阅读(252) 评论(0) 推荐(0) 编辑

摘要: 存储过程通过明确地将查询的可变部分转换为参数来增进执行计划的可重用性。这使执行计划在查询以可变部分的相同或不同值重新提交时可以被重用。存储过程包含一组复杂的SQL语句,使生成存储过程的执行计划的代价有些高。因此,通常重用存储过程的执行计划来代替生成新计划是有利的。但是,有时候现有的计划可能不适用... 阅读全文
posted @ 2015-05-08 18:14 铭轩同学 阅读(241) 评论(0) 推荐(0) 编辑

摘要: 元数据函数 1、获取数据库标识符DB_ID DB_ID函数用于获取当前数据库的唯一ID(int数据类型),数据库ID用于服务器上唯一区分书库。 语法结构: DB_ID (['database_name']) 参数中的database_name是sysname类型的数据库名... 阅读全文
posted @ 2015-05-08 18:10 铭轩同学 阅读(208) 评论(0) 推荐(0) 编辑

摘要: 数学函数 1、计算绝对值ABS ABS函数对一个数值表达式结果计算绝对值(bit数据类型除外),返回整数。 语法结构: ABS(数值表达式) 返回值:与数值表达式类型一致的数据 示例: SELECT ABS(-1) --输出 1 2、获取大于等于最小整数值Cel... 阅读全文
posted @ 2015-05-08 18:09 铭轩同学 阅读(239) 评论(0) 推荐(0) 编辑

摘要: 文本和图像函数 1、查找特定字符串PATINDEX 语法与字符串的patindex一样。 2、获取文本指针TEXTPTR SQLServer在存储文本类型(ntext、text)和图像数据类型(image)时,默认情况是与常见的基本数据类型(如char、int等)这样的数据时单独... 阅读全文
posted @ 2015-05-08 18:08 铭轩同学 阅读(196) 评论(0) 推荐(0) 编辑

摘要: 字符串函数 在开发T-SQL时,经常会需要对字符串进行各种各样的操作,下面介绍常用的字符串函数。 1、获取字符的ASCII码 ASCII ASCII码是对字符的标准编码。要获取字符的ASCII码就可以通过调用ASCII函数来实现。 语法结构: ASCII(espression) ... 阅读全文
posted @ 2015-05-08 18:07 铭轩同学 阅读(291) 评论(0) 推荐(0) 编辑

摘要: 日期时间函数 1、获取当前日期GetDate getdate()函数以datetime数据类型的格式返回当前SQLServer服务器所在计算机的日期和时间。其语法格式为getdate()。返回值舍入到最近的秒小数部分,精度为.333秒数据库十七偏移量不包含在内。 示例: select ... 阅读全文
posted @ 2015-05-08 18:06 铭轩同学 阅读(333) 评论(0) 推荐(0) 编辑

摘要: 聚合函数对一组值计算后返回单个值。除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null)。所有的聚合函数均为确定性函数。即任何时候使用一组相同的输入值调用聚合函数执行后的返回值都是相同的,无二义性。T-SQL提供的聚合函数一共有13个之多。 聚合函数通常会在下列场合... 阅读全文
posted @ 2015-05-08 18:05 铭轩同学 阅读(523) 评论(0) 推荐(0) 编辑

摘要: 一、目标:编写SQL动态查询 SQL常常和程序代码一起使用。我们通常所说的SQL动态查询,是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句。 string sql = SELECT * FROM Person WHERE Id = $Id 我们期望$Id是一个整型,因此当数据库接收到... 阅读全文
posted @ 2015-05-08 17:59 铭轩同学 阅读(263) 评论(0) 推荐(0) 编辑

摘要: 一、目标:整理数据 有的人有强迫症,他们会为一系列数据的断档而抓狂。 一方面,Id为3这一行确实发生过一些事情,为什么这个查询不返回Id为3的这一行?这条记录数据丢失了吗?那个Column到底是什么?我要为这条数据的丢失负责吗?二、反模式:填充角落 大多数人对于断档的第一反应就是想要填补其... 阅读全文
posted @ 2015-05-08 17:58 铭轩同学 阅读(222) 评论(0) 推荐(0) 编辑