gpt4 book ai didi

sql - 如何确定 SQL Server Express 表的最大可用大小?

转载 作者:行者123 更新时间:2023-12-04 14:10:30 26 4
gpt4 key购买 nike

我遇到了以前从未遇到过的 SQL Server Express 问题。

我有一个包含 3200 万行的表,其中设置了此列:

[Insp_ID] [nvarchar](8) NOT NULL,
[NodeID] [int] NULL,
[NodeVisible] [bit] NULL,
[Note] [nvarchar](max) NULL,
[Points] [int] NULL,
[QST_ID] [int] NULL,
[QST_Num] [int] NOT NULL,
[Response_Num] [int] NOT NULL,
[Value] [nvarchar](max) NULL,
[ValueID] [int] NULL,
[ValueVisible] [bit] NULL,

CONSTRAINT [QST2D_PK_i83] PRIMARY KEY CLUSTERED
([Insp_ID] ASC, [QST_Num] ASC, [Response_Num] ASC)

该表大约有 1900 MB,甚至可能更大一些。很难说,因为我几乎无法在不出现此错误的情况下对表进行任何维护操作:

Msg 802 There is insufficient memory available in the buffer pool.

据我所知,SQL Server Express 获得了 1GB。当我尝试更改主键或执行 DBCC DBREINDEX 时会发生这种情况。我可以从数据库中获取信息并返回的唯一方法是使用 BCP,这非常不方便(但是,有趣的是它可以工作)。 BCP 允许我重组表(即 PK),然后将数据带回。

无论如何,进一步的实验:我将行数减少到 8.2M,总表大小减少到大约 633MB。仍然得到相同的错误,内存不足。这令人费解,因为对我来说这似乎不是很多数据。

那时,我删除了两个 nvarchar(max) 列,这进一步将表大小减少到大约 540MB。那时,我的内存不再耗尽。

我无法判断缓冲区是在提示行数还是表大小,但根据这个轶事证据,感觉像是表大小。

有没有人对此有解决方案或见解?我觉得我们使用 SQL Server Express 找错了树——这太糟糕了,因为到目前为止它完全符合我们的需求。

最佳答案

根据以往的经验,SQL Server Express 有 1GB RAM 的上限,还有数据库大小限制,这取决于您使用的版本。

SO 上有一个关于 Limitations of SQL Server Express 的帖子这可能有助于解决一般问题。

在 MSDN 上多管闲事时,我发现了一小段不错的文字,我相信它可能会对您有所帮助:

SQL Server needs enough memory to hold the data in memory-optimized tables and indexes. To account for row versions, you should provide an amount of memory that is two times the expected size of memory-optimized tables and indexes. But the actual amount of memory needed will depend on your workload. You should monitor your memory usage and make adjustments as needed. The size of data in memory-optimized tables must not exceed the allowed percentage of the pool.

要了解内存优化表的大小,请参阅 here如何获取它(对于 SQL 2014)。

其他可能有用的文章是 Max rows in a SQL table?Maximum Capacity Specifications for SQL Server .

关于sql - 如何确定 SQL Server Express 表的最大可用大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29904951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com