我正在从MS Access迁移到SQL Server,是的!我知道SQL Server的容量超过了500k太字节,但我的老板也告诉我,SQL Server最终无法处理我插入表中的速率。
我有一个64列的表格,每天约有20,000行(128万个单元格)。大多数(约70%)数据类型是平均16个字符长的字符串。其余数据类型是短数字或布尔值。 我正在跟踪财务数据,这就是为什么会有这么多。假设这些数据需要被追踪到永久性,如果不是至少3 - 5年。
所以按照这个速度,SQL Server能够处理我的数据吗?我是否需要做一些特殊的配置才能让它发挥作用,或者这个数量是多么可笑?我觉得它足够了,但我只是想在继续前进之前确定。
谢谢!
答案 0 :(得分:5)
它与sql server
关系不大,而与其运行的方框有关。硬盘有多大?那里有多少记忆?什么样的CPU坐在上面?即使使用宽varchar(),每天20000也不是很多。但如果没有良好的索引,分区以及处理查询的内存,磁盘空间和CPU,您的问题更有可能是执行速度慢的查询。
无论如何,假设您使用的是VARCHAR()
而不是NVARCHAR()
,则单个字符就是一个字节。你说它们平均为16,但是VARCHAR()
中存储的字符串的长度或VARCHAR()
的最大大小是多少?这将有所作为。
假设字段的平均字符串长度,那么你可以64x16
来理解记录的字节大小(因为需要元数据,所以不是超精确的,但是足够接近)。那将是1024
个字节或每个记录1kb
。
5年后,20000*365*5
为36,500,000kb
36.5gb
。没什么大不了的。在那里添加索引和元数据以及所有这些,并且您可能会为此表推送50gb
。
我的猜测是你的平均字符串长度小于16,而字段只定义为VARCHAR(16)
。 VARCHAR()
只存储字符串长度的字节数(加上2来定义长度),因此它可能小于此估计值。如果使用全部CHAR(16)
定义表,则存储将始终为16个字节。
此外,如果您正在存储unicode并使用NVARCHAR()
,则将所有计算加倍,因为SQL Server使用UTF8,即每个字符2个字节。
答案 1 :(得分:1)
非常粗略的,背后的计算:
您每天要向表中添加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,更新的服务器硬件,以及能够处理增加的更新的其他技术需要。
所以不要担心。