随笔分类 - SQL Server优化
摘要:1. 索引重建和重组有什么用? 当修改表(UPDATE、INSERT、DELETE等)中数据,数据库引擎自动维护索引的数据和结构。但是随着修改次数的累积,可能会现: 索引中记录的数据顺序(逻辑顺序)和数据的实际顺序不一致(物理顺序),这也称之为 外部碎片 。 索引页的数据填充度变小(页密度),也称之
阅读全文
摘要:页并发访问的保护:闩锁 在多线程并发情况下,需要防止读线程读到写线程正在写的资源,在编程中,通过使用互斥器(Mutexes), 信号量(Semaphore), 临界区(Critical Section)和事件(Event Object)来保护资源,而这些机制在SQL Server中被统一表示为 闩锁
阅读全文
摘要:查询执行的内存授予(Query Execution Memory Grant) 有些操作符需要较多的内存才能完成操作。例如,SORT、HASH、HAS聚合等。执行计划通过操作符需要处理数据量的预估值(通过统计信息获得的预估行数)、操作符类型和列大小来获得所需要的内存总量。这个执行计划的内存总量,也叫
阅读全文
摘要:查询执行的总图: 根据总图的流程,详细说明每个部分: 1. 请求(Request) SQL Server是C/S架构的平台。与它交互的唯一方式就是发送包含数据库命令的请求。应用程序和数据库之前的通信协议叫做TDS(Tabular Data Stream)协议。应用程序可以使用以下几种实现了TDS协议
阅读全文
摘要:在前一篇博文数据压缩简要的基础上,我希望把数据压缩评估自动化。于是有了这篇博文。 白皮书推荐对符合如下条件的大型表和索引使用页压缩: 表或索引的扫描操作占到所有操作的75%及以上时 表或索引的更新操作占到所有操作的20%及以下时 注意,这是白皮书中的结论和建议,只做参考,最为最佳实践的考虑点之一。
阅读全文
摘要:1. 决定压缩哪些对象 通过sp_estimate_data_compression_savings 评估在ROW和PAGE压缩时分别节省的空间量。 表包含如下数据模式时,会有较好的压缩效果: 数字类型的列和固定长度的字符类型数据,但两者的大多数值都不会用到此类型的所有字节。如INT列的值大多数少于
阅读全文
摘要:此文描述查询内存授予(query memory grant)在SQL Server上是如何工作的,适用于SQL 2005 到2008。 查询内存授予(下文缩写为QMG)是用于存储当数据进行排序和连接时的临时中间数据行。查询在实际执行前需要先请求保留内存,所以会存在一个授予的动作。 这样的好处是提高查
阅读全文

浙公网安备 33010602011771号