首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >显示表/数据库增长的最佳方法是什么?

显示表/数据库增长的最佳方法是什么?
EN

Database Administration用户
提问于 2020-06-18 13:23:35
回答 1查看 45关注 0票数 1

我创建了一个存储数据库中最大的10个表的表。它的模式如下所示:

(示例仅包含3个表)

代码语言:javascript
运行
复制
| 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 |

由于我们的桌子增长很快,我每天都有桌子大小。在上面的例子中,只有一个月的第一天,因为这是我试图通过某种枢轴或什么来实现的。

我真正想要的是按月把这张桌子刨一下。

我是说,我想要这样的东西:

代码语言:javascript
运行
复制
| Table | size_JAN | size_FEV | size_MAR |
|-------|----------|----------|----------|
| tb1   | 2        | 5        | 6        |
| tb2   | 5        | 7        | 10       |
| tb3   | 1        | 2        | 6        |

我想的不是支点本身,而是,如果有一个好的方式发送每月报告与这些信息,连同历史数据。

编辑:

我能做的就是按月分开:

代码语言:javascript
运行
复制
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            |
EN

回答 1

Database Administration用户

发布于 2020-06-19 07:03:53

有一个层次的分析价值,去描述,诊断,预测,说明。你的问题是“描述性的”。我认为你应该以“预测”为目标。“

收集这些数字是因为您担心耗尽一些资源-磁盘空间、备份大小、顺序ID等等。这将导致问题,而不是表本身的绝对大小。因此,这就是应该报告的内容。

输出应该是

外推过去4个月,盘D:将于2021年1月满。上个月的报告预测2021年2月。

计算耗尽点的方法有很多种。简单的线性外推就是其中之一。我利用蒙特卡洛取得了一些成功。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/269408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档