评估插入会增长的页级空间

简介: 1 ;WITH NonClustedIndexColumn AS 2 ( 3 SELECT dataid,column_id,c.object_id, MAX(c.dataneme) dataneme FROM 4 sys.
 1 ;WITH NonClustedIndexColumn AS
 2 (
 3     SELECT dataid,column_id,c.object_id, MAX(c.dataneme) dataneme FROM 
 4     sys.index_columns  d
 5     INNER JOIN (SELECT index_id dataid,name dataneme ,* FROM sys.indexes WHERE index_id > 1
 6                 UNION ALL 
 7                 SELECT a.index_id dataid,a.name dataneme, b.* FROM sys.indexes a
 8                 INNER JOIN sys.indexes b ON a.object_id = b.object_id AND b.index_id = 1 
 9      ) c ON c.object_id  = d.object_id  AND d.index_id = c.index_id
10      GROUP BY dataid,column_id,c.object_id
11 ),NonClustedIndexSize
12 AS(
13 SELECT --a.name,a.max_length,b.name,c.index_id
14      OBJECT_NAME(a.object_id) name ,a.object_id,MAX(c.dataneme) index_name, c.dataid
15     ,SUM(CASE WHEN b.name IN ('varchar','nvarchar') THEN 2+a.max_length ELSE 0 END) [Variable_Data]
16     ,SUM(CASE WHEN b.name not IN ('varchar','nvarchar') THEN a.max_length ELSE 0 END) [Fixed_Data]
17     ,CEILING(SUM(CASE WHEN a.is_nullable = 1 THEN 1 ELSE 0 END)*1.0 /8) [NullByte]        
18     ,CASE WHEN c.dataid <=1 THEN 2 ELSE 1 END [RowHeader]
19     ,CASE WHEN c.dataid <=1 THEN 2 ELSE 0 END [Fixed_Length]
20     ,MAX( CASE WHEN b.name IN ('varchar','nvarchar')  THEN 2 ELSE 0 END) [Variable_Length]
21     , 2 [Column_Count]
22 FROM sys.columns a
23     INNER JOIN sys.types b ON a.user_type_id = b.user_type_id
24     INNER JOIN NonClustedIndexColumn c ON a.object_id = c.object_id AND a.column_id = c.column_id
25 WHERE a.object_id >100 AND dataid > 1 -- AND OBJECT_NAME(a.object_id) = 'userorder_package'
26  GROUP BY a.object_id,c.dataid
27  )
28 , ClustedHeapSize AS(
29 SELECT --a.name,a.max_length,b.name,c.index_id
30      OBJECT_NAME(a.object_id) name ,a.object_id,MAX(c.name) index_name, c.index_id
31     ,SUM(CASE WHEN b.name IN ('varchar','nvarchar') THEN 2+a.max_length ELSE 0 END) [Variable_Data]
32     ,SUM(CASE WHEN b.name not IN ('varchar','nvarchar') THEN a.max_length ELSE 0 END) [Fixed_Data]
33     ,CEILING(SUM(CASE WHEN a.is_nullable = 1 THEN 1 ELSE 0 END)*1.0 /8) [NullByte]        
34     ,CASE WHEN c.index_id <=1 THEN 2 ELSE 1 END [RowHeader]
35     ,CASE WHEN c.index_id <=1 THEN 2 ELSE 0 END [Fixed_Length]
36     ,MAX( CASE WHEN b.name IN ('varchar','nvarchar')  THEN 2 ELSE 0 END) [Variable_Length]
37     , 2 [Column_Count]
38 FROM sys.columns a
39     INNER JOIN sys.types b ON a.user_type_id = b.user_type_id
40     INNER JOIN sys.indexes c ON c.object_id  = a.object_id  --AND d.index_id = c.index_id
41 WHERE a.object_id >100 AND c.index_id <= 1
42  GROUP BY a.object_id,c.index_id )
43 ,RowSize AS
44 (
45     SELECT name = MAX(name),OBJECT_ID,rowsize=SUM([Variable_Data]+[Fixed_Data]+[NullByte]+[RowHeader]+[Fixed_Length]+[Variable_Length]+[Column_Count])
46     FROM (
47         SELECT * FROM NonClustedIndexSize
48         UNION ALL
49         SELECT * FROM ClustedHeapSize
50     ) a
51     GROUP BY OBJECT_ID
52 )
53 
54 SELECT * FROM rowsize 

 

目录
相关文章
|
1月前
|
分布式计算 负载均衡 监控
大数据增加分区数量
【11月更文挑战第4天】
32 3
|
29天前
|
存储 大数据 Serverless
大数据增加分区优化资源使用
大数据增加分区优化资源使用
25 1
查看服务器用户所占空间
查看服务器用户所占空间
146 0
动态优化解决方案空间中的最小支持(Matlab代码实现)
动态优化解决方案空间中的最小支持(Matlab代码实现)
|
存储 机器学习/深度学习 自然语言处理
【算法的特性,标准,时间维度空间维度计算方式】
【算法的特性,标准,时间维度空间维度计算方式】
292 0
【算法的特性,标准,时间维度空间维度计算方式】
|
缓存 开发框架 .NET
实体列表缓存(最土的办法实现百万级性能)
在实际项目开发中,经常遇到有一些表数据很少(1000行以内),不会频繁修改(平均每行几个小时才会修改一次),例如配置表、分类表等。 这样的表,往往可以接受三五秒甚至更长的延迟,正是最适合使用缓存的地方。 实体缓存:一次性加载全表数据进入内存,供上层多维度查询!
383 0
|
存储 容灾 数据库
影响存储快照使用率的六大因素
有时候我觉得,朴素而不花哨的技术反而适用性更强。
1899 0
|
算法 C# 索引
C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)
原文:C# 实现寻峰算法的简单优化(包含边峰,最小峰值,峰距)   核心寻峰算法的原理参考Ronny,链接:投影曲线的波峰查找, C#翻译原理代码参考sowhat4999,链接:C#翻译Matlab中findpeaks方法  前人种树,后人乘凉。
1989 0
|
数据库连接 数据库 C++
一个内存增长问题的分析和处理(三)
和框架部门的同事一起,经过valgrind大量的测试和验证,并没有发现有确切的内存泄露的代码段。对于C和C++程序,出现内存增长,可能我们很自然的就去内存泄露方面去思考,有时候,这种方向可能不一定对。         在解决这个问题的过程中,生成上又出现了另外一个内存增长的问题。
874 0