Intereting Posts

Не открывать соединение Sql для повторения множества запросов? Или закрыть каждый шаг?

Эй там – это общее для любой операции, вызывающей SQL-сервер, или чего-то, требующего открытого соединения.

Предположим, что у меня есть от 20 до 1000 вызовов, чтобы сделать каждый элемент данных зацикленным. Для каждого шага я буду выбирать из sql, хранить данные локально в структуре, а затем продолжить. Это не очень дорогостоящий вызов, поэтому я должен держать соединение открытым для всего цикла? Или я должен открывать и закрывать каждый шаг?

Как дорого во время запуска открывается соединение? Я бы подумал, что было бы лучше сохранить соединение открытым, но хотелось бы получить правильный ответ на это.

Благодарю.

Как дорого во время запуска открывается соединение

Это учитывает только скорость процессора и не учитывает пропускную способность.

Сохранение открытого соединения экономит процессор, но блокирует другие запросы от возможности использовать это соединение. Так что это компромисс. Трудно сказать, что означает «правильный ответ», не зная намного больше, но в любом случае кажется, что кто-то перебирает допуски вместо того, чтобы прибивать номинанты

Тем не менее, я обычно начинаю с того, что поддерживаю соединение открытым на протяжении всего периода работы SQL, а затем закрываю его.

Хотя одна вещь, которая кажется немного отрывочной, – это линия

20 до 1000 Выберите вызовы, чтобы сделать для каждого элемента данные зацикленными.

Вместо этого попробуйте выполнить больше операций на основе набора.

Не только для этого цикла вы должны поддерживать соединение открытым для всего запроса. Хорошая практика – открывать соединение только один раз в начале и закрывать один раз (в самом конце)

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

Это тысячи запросов, на которые потребуется много времени.

Соединения в MSSQL с использованием ADO.NET кэшируются, так что это не так, когда вы закрываете соединение, фактический TCP / IP-канал в базу данных фактически закрыт. Поэтому закрытие и открытие не потребуют времени. Но независимо от того, что вы делаете, когда вы делаете это 1000 раз, все это складывается.

Получите все свои данные в одном вызове базы данных, закройте соединение, а затем сделайте то, что вам нужно сделать для вашего кода на C #. То, что я пытаюсь выполнить, – это один вызов базы данных на цикл запроса-ответа.

Вы должны использовать PDO. Он создает объект данных для каждого соединения БД, и вы можете ссылаться на несколько баз данных на одной странице, не открывая и закрывая снова и снова.

http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/

У меня также есть некоторый открытый код на Github, чтобы начать с вас. Найдите Wrenbjor на github и найдите репозиторий PDO. Я бы связал его, но я все еще новичок в SO, поэтому у меня может быть только одна гиперссылка в сообщении.