сколько источников данных может обрабатывать холодный синтез - PullRequest
1 голос
/ 06 декабря 2010

У нас есть корпоративный сервер Coldfusion с двумя экземплярами. Каждый экземпляр имеет более 200 источников данных для баз данных на одном сервере MSSQL. Это число будет продолжать расти. Теперь кажется, что запросы к одному источнику данных замедляются, хотя база данных мала. Возможно, что запросы становятся медленнее, когда у CF больше источников данных?

Ответы [ 3 ]

2 голосов
/ 06 декабря 2010

Это больше, чем просто холодное слияние. Каждое соединение составляет около 4 Кб, и каждый источник данных может использовать несколько соединений. Таким образом, 200 DSN могут равняться 300 или 400 соединениям (или 800 или 1000 при агрегировании). Сам сервер БД использует «tempdb» в качестве рабочего пространства для обработки запросов. Он расширяет это рабочее пространство для обработки трафика, но в некотором смысле это общий ресурс . Таким образом, одна БД может влиять на другую БД на сервере.

Я бы:

  • Проверьте общее количество соединений на сервере SQL (у perfmon есть несколько хороших счетчиков для этого)
  • Используйте монитор сервера для определения общего количества соединений в каждом экземпляре.
  • Использование мониторинга сети для определения пропускной способности сетевого подключения на каждом сервере ...

Конечно, само собой разумеется, что ваши базы данных также должны быть точно настроены (проиндексированы и оптимизированы - с хорошей схемой и поддержаны хорошим кодом запроса). Создание масштабируемого решения требует всех этих вещей:)

PS - само собой разумеется, что вы можете связаться со мной для более "формальной" помощи. Я буду рад поболтать о вашей проблеме.

2 голосов
/ 06 декабря 2010

Являются ли источники данных разделенными по какой-либо причине (например, разные клиенты / клиенты и т. Д.)?Если это действительно большое приложение с кучей баз данных, вы можете уменьшить количество уведомлений о доставке с помощью запросов к нескольким базам данных через один источник данных CF.

Если учетная запись CF используется для подключения к SQLСервер имеет доступ на чтение к обеим базам данных на сервере, вы можете сделать что-то вроде этого:

SELECT field1, field2, field3 ... FROM [databaseA]. [Dbo] .Table1 T1 JOIN [databaseB]. [dbo] .Table2 T2 ON ...

Я сделал это с помощью таблиц State и Country, которые совместно используются несколькими базами данных.Тщательно установите разрешения, чтобы предотвратить повреждение или ошибочные обновления.

2 голосов
/ 06 декабря 2010

Конечно, это возможно, я сомневаюсь, что есть много людей с таким опытом, поэтому мы можем только догадываться.

Лично я никогда не создавал бы столько баз данных на SQL-сервере и столько источников данных в CF. ИМХО использование схем БД было бы намного лучшим решением, проще в обслуживании, администрировании и так далее.

Как обстоят дела с памятью? Может случиться так, что огромное количество JDBC-соединений душит сервер. Сначала я бы проверил потребление памяти, статистику SQL, чтобы увидеть сквозной вывод данных, а, возможно, позже, даже параметры производительности SQL-серверов, параметры CF, чтобы увидеть возможные подключения JDBC, параметры сети и так далее. Опять же, просто гадать и пытаться дать вам подсказку, где искать.

...