我创建了一个存储数据库中最大的10个表的表。它的模式如下所示:
(示例仅包含3个表)
| Table | size_mb | Date |
|-------|---------|------------|
| tb1 | 2 | 01/01/2020 |
| tb2 | 5 | 01/01/2020 |
| tb3 | 1 | 01/01/2020 |
| tb1 | 4 | 02/01/2020 |
| tb2 | 12 | 02/01/2020 |
| tb3 | 2 | 02/01/2020 |
| tb1 | 10 | 03/01/2020 |
| tb2 | 20 | 03/01/2020 |
| tb3 | 5 | 03/01/2020 |由于我们的桌子增长很快,我每天都有桌子大小。在上面的例子中,只有一个月的第一天,因为这是我试图通过某种枢轴或什么来实现的。
我真正想要的是按月把这张桌子刨一下。
我是说,我想要这样的东西:
| Table | size_JAN | size_FEV | size_MAR |
|-------|----------|----------|----------|
| tb1 | 2 | 5 | 6 |
| tb2 | 5 | 7 | 10 |
| tb3 | 1 | 2 | 6 |我想的不是支点本身,而是,如果有一个好的方式发送每月报告与这些信息,连同历史数据。
编辑:
我能做的就是按月分开:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT ',' + QUOTENAME(Tabela)
from tbldatabasesize_tables
group by Tabela
order by Tabela
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT Ano,
case when mes = 1 then ''Jan''
when mes = 2 then ''Fev''
when mes = 3 then ''Mar''
when mes = 4 then ''Abr''
when mes = 5 then ''Mai''
when mes = 6 then ''Jun''
when mes = 7 then ''Jul''
when mes = 8 then ''Ago''
when mes = 9 then ''Set''
when mes = 10 then ''Out''
when mes = 11 then ''Nov''
when mes = 12 then ''Dez''
end as Mes,' + @cols + ' from
(
select
year(DATE_REPORT) as Ano,
month(DATE_REPORT) as Mes,
Tabela,
convert(int,Tamanho_Da_Tabela_em_MB) as Tamanho_Da_Tabela_em_MB
from tbldatabasesize_tables
) x
pivot
(
avg(Tamanho_Da_Tabela_em_MB)
for Tabela in (' + @cols + ')
) p '
execute(@query);
| Ano | Mes | TB1| TB2 | TB3 | TB4 | TB5 | TB6 | TB7 | TB8 | TB9| TB10 |
|------|-----|-------------|-------------------|---------------------|----------------|------------|-----------|---------------|--------------|--------------------------------|------------------|
| 2020 | Mar | 3439 | 26363 | 77232 | 235643 | 32718 | 196380 | 11141 | 6570 | 9606 | 24820 |
| 2020 | Abr | 3445 | 26413 | 77660 | 239613 | 32718 | 199713 | 11210 | 6591 | 9926 | 24952 |
| 2020 | Mai | 3453 | 26493 | 78479 | 244071 | 32718 | 203283 | 11341 | 6613 | 10270 | 25084 |
| 2020 | Jun | 3472 | 26583 | 79440 | 247916 | 32718 | 197185 | 11482 | 6630 | 10514 | 25217 |发布于 2020-06-19 07:03:53
有一个层次的分析价值,去描述,诊断,预测,说明。你的问题是“描述性的”。我认为你应该以“预测”为目标。“
收集这些数字是因为您担心耗尽一些资源-磁盘空间、备份大小、顺序ID等等。这将导致问题,而不是表本身的绝对大小。因此,这就是应该报告的内容。
输出应该是
外推过去4个月,盘D:将于2021年1月满。上个月的报告预测2021年2月。
计算耗尽点的方法有很多种。简单的线性外推就是其中之一。我利用蒙特卡洛取得了一些成功。
https://dba.stackexchange.com/questions/269408
复制相似问题