随笔分类 -  性能调优

摘要:一、堆表1、堆的结构图1堆是不含聚集索引的表。堆的 sys.partitions 中具有一行,对于堆使用的每个分区,都有 index_id = 0。默认情况下,一个堆有一个分区。当堆有多个分区时,每个分区有一个堆结构,其中包含该特定分区的数据。例如,如果一个堆有四个分区,则有四个堆结构;每个分区有一个堆结构。根据堆中的数据类型,每个堆结构将有一个或多个分配单元来存储和管理特定分区的数据。每个堆中的每个分区至少有一个 IN_ROW_DATA 分配单元。如果堆包含大型对象 (LOB) 列,则该堆的每个分区还将有一个 LOB_DATA 分配单元。如果堆包含超过 8,060 字节行大小限制的可变长度列 阅读全文
posted @ 2013-03-30 10:22 我是 SQLDBA 阅读(307) 评论(3) 推荐(2)
摘要:最近碰到几个年轻的程序员,惊讶的发现,很多人对数据库的认识只停留在对表的select,update,insert和delete,连最最基本的聚集索引和非聚集索引都搞不清!所以今天通过一个案例先来讲讲非聚集索引的seek和scan的性能差别。1.问题描述A服务器在工作时间段整体CPU较基线偏高,且有越来越高的趋势,虽然暂时在可接受范围内,但本着防患于未然的原则,应该引起重视。2.发现问题首先我们要找出开销较大的sql语句,看看是否有空间优化。方法很多种,最简单的是通过DMV的sys.dm_exec_query_stats。笔者这里提供了一段脚本,供大家参考。SELECT TOP 20[Datab 阅读全文
posted @ 2013-03-23 15:05 我是 SQLDBA 阅读(472) 评论(1) 推荐(0)
摘要:场景描述生产上有一张核心表,读写比例在8:2左右,发现聚集索引字段顺序不佳,经过测试后,发现调整字段顺序后能提高性能。于是在凌晨调整了聚集字段的顺序,但因为操作失误,将聚集索引调成了非聚集索引。在实际业务压力下,聚集,非聚集索引对性能的变化如下。类别索引名类型索引字段原索引PK_XXXXXXXPrimary key,CLustered(C1,C2,C3)新索引PX_XXXXXXXPrimary key,Non Clustered(C3,C2,C1)性能指标变化1:CheckPoint 情况(蓝线:实际压力,红线:基线) 图1(CheckPoint pages/sec_other)2:Disk 阅读全文
posted @ 2013-03-15 16:08 我是 SQLDBA 阅读(351) 评论(1) 推荐(0)