池碎片

时间:2018-07-30 10:35:12

标签: sql-server ado.net connection

我的主数据库中有一个Company表。该表中有200行(每个公司一个行)。每个公司根据主数据库中Company表中的名称有自己的数据库。所以我还有200个其他数据库我有一个Windows服务,它以指定的时间间隔连续运行。Windows服务实际上是从不同的ERP&Accounting系统导入数据,然后导出到这些系统。在每次运行中,它都会比较Company表中名为“ LastExecutedTime”的字段,以估算在此运行中需要导入和导出的公司。该服务会创建相同数量(公司数量)的parrell任务以及导入和导出数据。

在每个并行任务中,导入/导出后,它将连接到我服务器中的不同数据库以保存导入的数据。因此,如果数量为20,它将创建21个连接池(20个不同的数据库和一个主数据库)。随着公司数量的增加,我必须进行池碎片化。

This显示 “由于许多数据库导致池碎片”,建议与主数据库连接并使用Transact-SQL USE语句更改为所需的数据库,在这种情况下,它将创建一个连接池,我需要将MaxPoolSize增大到200。的公司每天都在增加,我需要设定一个 为安全起见将值设置为MaxPoolSize。这是一种解决方案

This说:“在高效的生产系统中,池的数量通常很少(1到10),使用的连接总数也很少(少于12)”。我有另一种解决方案在我心中。是否可以在连接字符串中使用自定义键值对?如果可能的话,我会将这个价值分配给200家公司。每个价值都会跌落20家公司。我将使用此值与主数据库的连接字符串为不同的键/值创建不同的池。这样一来,我最多可以使用10个连接池进行10 * 100 = 1000个连接。我不需要增加MaxPoolSize

第二种解决方案有什么问题吗?

0 个答案:

没有答案