SQL Server将以多长时间达到此速率?

时间:2016-03-04 16:32:34

标签: sql sql-server database

我正在从MS Access迁移到SQL Server,是的!我知道SQL Server的容量超过了500k太字节,但我的老板也告诉我,SQL Server最终无法处理我插入表中的速率。

我有一个64列的表格,每天约有20,000行(128万个单元格)。大多数(约70%)数据类型是平均16个字符长的字符串。其余数据类型是短数字或布尔值。 我正在跟踪财务数据,这就是为什么会有这么多。假设这些数据需要被追踪到永久性,如果不是至少3 - 5年。

所以按照这个速度,SQL Server能够处理我的数据吗?我是否需要做一些特殊的配置才能让它发挥作用,或者这个数量是多么可笑?我觉得它足够了,但我只是想在继续前进之前确定。

谢谢!

4 个答案:

答案 0 :(得分:5)

它与sql server关系不大,而与其运行的方框有关。硬盘有多大?那里有多少记忆?什么样的CPU坐在上面?即使使用宽varchar(),每天20000也不是很多。但如果没有良好的索引,分区以及处理查询的内存,磁盘空间和CPU,您的问题更有可能是执行速度慢的查询。

无论如何,假设您使用的是VARCHAR()而不是NVARCHAR(),则单个字符就是一个字节。你说它们平均为16,但是VARCHAR()中存储的字符串的长度或VARCHAR()的最大大小是多少?这将有所作为。

假设字段的平均字符串长度,那么你可以64x16来理解记录的字节大小(因为需要元数据,所以不是超精确的,但是足够接近)。那将是1024个字节或每个记录1kb

5年后,20000*365*536,500,000kb 36.5gb。没什么大不了的。在那里添加索引和元数据以及所有这些,并且您可能会为此表推送50gb

我的猜测是你的平均字符串长度小于16,而字段只定义为VARCHAR(16)VARCHAR()只存储字符串长度的字节数(加上2来定义长度),因此它可能小于此估计值。如果使用全部CHAR(16)定义表,则存储将始终为16个字节。

此外,如果您正在存储unicode并使用NVARCHAR(),则将所有计算加倍,因为SQL Server使用UTF8,即每个字符2个字节。

答案 1 :(得分:1)

非常粗略的,背后的计算:

  • 每个字段16个字节
  • 每条记录64个字段
  • 每天20,000条记录

您每天要向表中添加20MB。每年7GB。

这不是大量数据。有很多人在SQL Server上运行多TB的数据库。

更重要的是将数据加载到表中的过程,索引(以便您可以有效地查询数据),服务器配置(I / O,内存,CPU)以及您如何使用#39;重新管理它。最终,您可能需要Enterprise Edition来使用额外的内存,表分区等。

您的问题的简短回答:是的,只要您正确设计,SQL Server就可以处理这个问题

答案 2 :(得分:0)

如果我只统计数据:

20.000 rows * (70% * 16 bytes + 30% * 4 bytes) * 64 columns = 15.872.000 bytes.

您每天要插入16 MB。在它变得无法控制之前,这将持续很长时间。

答案 3 :(得分:0)

按照这个速度,当你甚至关闭到容量时,会有更新版本的SQL Server,更新的服务器硬件,以及能够处理增加的更新的其他技术需要。

所以不要担心。