AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 340968
Accepted
Don
Don
Asked: 2024-07-16 06:30:58 +0800 CST2024-07-16 06:30:58 +0800 CST 2024-07-16 06:30:58 +0800 CST

为什么 PRIMARY 文件组不断增大?

  • 772

运行 SQL Server 2019 Enterprise。我有一个 PRIMARY 文件组,但也在我创建的 Data1 文件组中添加了四个 ndf 文件。正如预期的那样,随着更多数据的添加,我不得不增加 Data1 文件组上的可用空间,但 mdf PRIMARY 文件组的大小保持相对稳定。在过去的几个月里,我不得不增加 PRIMARY 文件组中的空间。它从 5GB 开始,几周前我扩展到 10GB。再次用完空间,刚刚增加到 15GB。Data1 文件组是默认文件组。为什么 PRIMARY 文件组现在突然增长,而它不是默认文件组?每个 Data1 文件都设置为 160GB,因此 PRIMARY 仍然小得多。只是想知道是否有办法确定为什么它在过去停滞不前时会意外增长。

在此处输入图片描述

sql-server-2019
  • 1 1 个回答
  • 40 Views

1 个回答

  • Voted
  1. Best Answer
    Severalnines
    2024-07-16T21:59:01+08:002024-07-16T21:59:01+08:00

    您可以采取几个可能的步骤来确定为什么 SQL Server 设置中的 PRIMARY 文件组可能会意外增长:

    • 确认 PRIMARY 文件组中没有无意中创建所有新表或大型对象。您可以运行以下查询:
    SELECT
        o.name AS ObjectName,
        i.name AS IndexName,
        fg.name AS FileGroupName
    FROM
        sys.indexes i
    INNER JOIN
        sys.filegroups fg ON i.data_space_id = fg.data_space_id
    INNER JOIN
        sys.objects o ON i.object_id = o.object_id
    WHERE
        o.type = 'U'
    ORDER BY
        FileGroupName, ObjectName;
    
    • 确认 PRIMARY 文件组中尚未创建所有索引。您可以运行以下查询:
    SELECT
        i.name AS IndexName,
        o.name AS TableName,
        fg.name AS FileGroupName
    FROM
        sys.indexes i
    INNER JOIN
        sys.filegroups fg ON i.data_space_id = fg.data_space_id
    INNER JOIN
        sys.objects o ON i.object_id = o.object_id
    WHERE
        i.type_desc = 'NONCLUSTERED' -- or 'CLUSTERED', depending on the index type
    ORDER BY
        FileGroupName, TableName, IndexName;
    
    • 检查系统表和内部表的增长情况。使用以下查询检查:
    SELECT
        t.name AS TableName,
        s.name AS SchemaName,
        p.rows AS RowCounts,
        fg.name AS FileGroupName
    FROM
        sys.tables t
    INNER JOIN
        sys.schemas s ON t.schema_id = s.schema_id
    INNER JOIN
        sys.partitions p ON t.object_id = p.object_id
    INNER JOIN
        sys.allocation_units a ON p.partition_id = a.container_id
    INNER JOIN
        sys.filegroups fg ON a.data_space_id = fg.data_space_id
    WHERE
        fg.name = 'PRIMARY'
    ORDER BY
        p.rows DESC;
    
    • 检查架构的所有近期更改,因为架构更改可能会增大一些系统元数据表。您可以使用以下查询进行检查:
    SELECT
        OBJECT_NAME(object_id) AS TableName,
        SUM(reserved_page_count) * 8.0 / 1024 AS SpaceUsedMB
    FROM
        sys.dm_db_partition_stats
    WHERE
        OBJECT_NAME(object_id) LIKE 'sys%'
    GROUP BY
        OBJECT_NAME(object_id)
    ORDER BY
        SpaceUsedMB DESC;
    

    您还可以检查由于查询而导致的全文索引的增长。如果您启用了全文索引,则会出现这种情况。

    您还可以关注大型交易和交易日志的增长。

    如果这没有任何意义,您可能需要对数据库的活动和增长模式进行更深入的分析。

    • 1

相关问题

  • SQL Server 评估期已过期

  • 新的系统存储过程 sys.xp_delete_files 与 sys.xp_delete_file 有何不同?

  • 从 SQL Server 2012 SP1 升级到 SQL Server 2019

  • MS SQL Server 是否有 generate_series 功能

  • 如何启用 SQL Server 2019 的结果集缓存?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve