Производительность связанного сервера SQL Server

Вот альтернативный подход к вокруг' части. Не наиболее блестяще кодированное решение, но это сделало задание, и этот тип синтаксиса немного легче помнить (плюс, работал бы на значения выравнивания, которые не являются питанием 2). Эти uintptr_t бросок был необходим для успокоения компилятора; адресная арифметика с указателями не очень любит разделение или умножение.

void *mem = malloc(1024 + 15);
void *ptr = (void*) ((uintptr_t) mem + 15) / 16 * 16;
memset_16aligned(ptr, 0, 1024);
free(mem);
17
задан George2 8 August 2009 в 12:27
поделиться

5 ответов

Мой вопрос для связанного сервера: есть большая проблема с производительностью? Если да, что является ключевым узким местом в производительности и передовой практике мы должны следовать?

По сравнению с чем? Для каких запросов? конечно все зависит от того, что вы делаете. Для некоторых запросов снижение производительности будет незначительным, для других - значительным.

Есть несколько проблем, о которых вы должны помнить:

  • Если вы будете объединять 2 таблицы из DB1 в 2 таблицы из DB2, а таблицы большие, все может стать некрасивым. В конце концов, запросы где-то будут выполняться. База данных должна будет перенести все результаты в основную базу данных и поддерживать целостность транзакций в основной базе данных. Это может быть очень дорого.
  • Если вы начнете запускать распределенные транзакции, материал может быстро стать некрасивым .
  • При объединении данных между серверами ваши индексы на удаленном сервере могут стать бесполезными. Все данные должны куда-то переместиться для соединений.
  • Связанные серверные ссылки могут отключаться в неожиданное время и приводить к затруднению диагностики ошибок.

В прошлом я встречал ситуации, когда локально перемещать удаленные данные и индексировать их раньше было на несколько порядков быстрее. присоединяясь к нему.

17
ответ дан 30 November 2019 в 12:58
поделиться

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

В любом случае, я обнаружил, что единственное серьезное узкое место - это перескакивание серверов, поскольку он должен передавать информация дважды.

2
ответ дан 30 November 2019 в 12:58
поделиться

Это зависит от того, что вы делаете.

Если вы выполняете запросы, которые объединяют таблицы в двух экземплярах сервера и передают большие объемы данных, то у вас есть узкое место, которое вы необходимо знать.

Если серверы находятся в собственной подсети со ссылкой на 1 ГБ, вам не следует сильно беспокоиться. Я был бы обеспокоен, если два сервера соединены общим медленным каналом.

5
ответ дан 30 November 2019 в 12:58
поделиться

I use linked servers frequently to synchronise data between environments, mainly because I found it to be the easiest solution to code and manage.

One tip I found, but may not be an option for others, was to run any procedures on the server that has the most data or is doing the most updating/inserting. For example I have a procedure that compares two tables and inserts/updates from A to B. If I ran this on server A it would take many times longer than running the procedure on B. If you don't have a choice where to run our code, and you are stuck on, say, server A, then this advice may not help.

Another tip is to reduce the data returned to the minimum necessary. Whereas you might normally have data returned almost instantly on a local server, if a linked server is some distance away then the latency can be very painful. Be stricter than normal in accessing only those columns you need.

2
ответ дан 30 November 2019 в 12:58
поделиться

Я обнаружил, что если вы выполняете внешние соединения (влево / вправо), производительность быстро падает. Иногда быстрее выбрать данные с удаленного сервера во временную таблицу и проиндексировать их, чем присоединяться по сети. В большинстве случаев лучшая стратегия - написать запрос так, как он имеет смысл, а затем настраивать его только в том случае, если производительность является реальной проблемой.

1
ответ дан 30 November 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: