数据通常按照正在创建的索引的类似或精确顺序进行预排序,但未排序的数据集具有类似的观察结果。
一个。 cpu保持在3%以下(32个逻辑核心,maxdop设置为8)
湾标准sql(不支持并行索引计划)
℃。磁盘利用率通常低于1MBS(磁盘支持500 + mbs),突发时间不到1%,超过100mbs
d。网络利用率低于10kbs但支持1gbs
即没有其他进程在sql上发生,115GB的ram可用。
在临时表或物理表上创建索引时会发生这种情况。只是好奇为什么没有利用很多系统资源。串行非并行进程可能利用最少的资源?
服务器设置: 一个。最小服务器内存:默认为0 湾最大服务器内存115gb C。索引创建内存0(默认) d。每个查询的最小内存(8192kb,默认值为1024kb)
使用提示“在tempdb中排序”没有明显的效果。正在使用基本逻辑: “在test.mydb.mytable(id_column,date_column)上创建唯一的集群索引abc”
感谢您的任何见解。
unique:聚簇索引查询计划 插入>聚集索引插入(成本100%)>计算标量>计算标量>计算标量>顶部>不断扫描。
如果没有100%预先分类,有时候会有一部分成本%。
其他信息:
当数据未排序时,索引如下所示: 插入>指数插入(21%成本)>排序(76%成本)>表扫描(3%成本)
排序和插入始终有警告:
插入:黄色感叹号无解释。状态maxdop = 1(我认为只有sql标准的选项)
sort:提到tempdb溢出数据警告。 “运营商使用tempdb在溢出级别1和溢出线程1执行期间溢出数据,排序写入1826397页面并从tempddb读取1826397页面,授予内存21016760kb ......”
在创建索引时添加提示以使用tempdb通常会产生负面影响,即使两个驱动器的性能相同(Sql db驱动器和tempdb)。
更新 旁注:我经常注意到溢出到tempdb中的查询(自maxdop = 8以来有8个线程),并且在查询优化器中被授予了12-16GB的内存。该服务器有128GB内存,115GB专用于SQL。当服务器上没有运行其他查询时,它仍会溢出,这是奇怪的。