Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server多久才能以这种速度达到容量?_Sql_Sql Server_Database - Fatal编程技术网

SQL Server多久才能以这种速度达到容量?

SQL Server多久才能以这种速度达到容量?,sql,sql-server,database,Sql,Sql Server,Database,我正在从MS Access转到SQL Server,耶!我知道SQL Server具有超过500k TB的巨大容量,但我的老板也告诉我,SQL Server最终将无法处理我插入表中的速率 我有一个64列的表格,每天大约增加20000行(128万个单元格)。大多数(约70%)数据类型是平均长度为16个字符的字符串。其余的数据类型是短数字或布尔值。 我在跟踪财务数据,这就是为什么有这么多。我们的假设是,如果不是至少3-5年的话,这些数据将需要永久跟踪 那么,按照这种速度,SQL Server能够处理

我正在从MS Access转到SQL Server,耶!我知道SQL Server具有超过500k TB的巨大容量,但我的老板也告诉我,SQL Server最终将无法处理我插入表中的速率

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

那么,按照这种速度,SQL Server能够处理我的数据吗?我需要做一些特殊的配置才能让它工作,还是说这个数量微不足道?我觉得这已经足够了,但我只是想在前进之前确定一下


谢谢

它与
sql server
关系不大,而与它运行的盒子关系更大。硬盘有多大?里面有多少内存?它是什么类型的CPU?即使使用wide varchar(),每天20000美元也不算多。但是,如果没有良好的索引、分区以及内存、磁盘空间和CPU来处理针对它的查询,那么问题很可能是执行缓慢的查询

无论如何,假设您使用的是
VARCHAR()
而不是
NVARCHAR()
一个字符就是一个字节。您说平均值为16,但这是存储在
VARCHAR()
中的字符串的长度还是
VARCHAR()的最大大小?这会有所不同

假设这是一个字段的平均字符串长度,那么您可以通过
64x16
来了解记录的字节大小(由于需要元数据,因此不是非常精确,但足够接近)。这将是每个记录的
1024个字节或
1kb

5年后,这将是
20000*365*5
36500000kb
36.5gb
。没什么大不了的。在那里添加索引和元数据以及所有这些,也许您将为此表推送
50gb

我的猜测是,您的平均字符串长度小于16,而字段仅定义为
VARCHAR(16)
VARCHAR()
只存储与字符串长度相同的字节数(加上2来定义长度),因此它可能小于此估计值。如果表是用all
CHAR(16)
定义的,那么存储将始终是16字节


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

它与
SQL Server
关系不大,而与运行它的框关系更大。硬盘有多大?里面有多少内存?它是什么类型的CPU?即使使用wide varchar(),每天20000美元也不算多。但是,如果没有良好的索引、分区以及内存、磁盘空间和CPU来处理针对它的查询,那么问题很可能是执行缓慢的查询

无论如何,假设您使用的是
VARCHAR()
而不是
NVARCHAR()
一个字符就是一个字节。您说平均值为16,但这是存储在
VARCHAR()
中的字符串的长度还是
VARCHAR()的最大大小?这会有所不同

假设这是一个字段的平均字符串长度,那么您可以通过
64x16
来了解记录的字节大小(由于需要元数据,因此不是非常精确,但足够接近)。这将是每个记录的
1024个字节或
1kb

5年后,这将是
20000*365*5
36500000kb
36.5gb
。没什么大不了的。在那里添加索引和元数据以及所有这些,也许您将为此表推送
50gb

我的猜测是,您的平均字符串长度小于16,而字段仅定义为
VARCHAR(16)
VARCHAR()
只存储与字符串长度相同的字节数(加上2来定义长度),因此它可能小于此估计值。如果表是用all
CHAR(16)
定义的,那么存储将始终是16字节


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

非常粗略,信封背面计算:

  • 每个字段16字节
  • 每个记录64个字段
  • 每天20000条记录
您每天向表中添加20MB。每年7GB

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

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


对您的问题的简短回答是:是的,SQL Server可以很好地处理这一问题,只要您正确地设计它

非常粗略的信封背面计算:

  • 每个字段16字节
  • 每个记录64个字段
  • 每天20000条记录
您每天向表中添加20MB。每年7GB

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

更重要的是将数据加载到表中的过程、索引(以便有效地查询数据)、服务器配置(I/O、内存、CPU)以及如何管理所有这些。最终,您可能需要Enterprise Edition来利用额外的内存,
20.000 rows * (70% * 16 bytes + 30% * 4 bytes) * 64 columns = 15.872.000 bytes.