Можем ли мы использовать одно соединение с базой данных для одновременного выполнения нескольких операторов выбора базы данных из нескольких потоков? - PullRequest
3 голосов
/ 01 декабря 2011

Я хочу использовать одно соединение с базой данных из нескольких потоков для одновременного чтения (или выполнения только операторов выбора) в MS SQL Server.Можно ли выполнить все эти операторы select одновременно из разных потоков.

Я использую MS SQL Server из C ++ в среде Linux.Мне нужно создать пулы соединений с базой данных для чтения и записи отдельно.Поэтому я хочу знать, есть ли возможность совместного использования одного и того же соединения между потоками только для чтения.

Операторы выбора могут возвращать несколько строк (более одной строки или набора результатов).Будет ли это проблемой?

Ответы [ 3 ]

4 голосов
/ 01 декабря 2011

Не используйте одно и то же соединение между потоками.Для одного соединения может быть выполнена только одна команда.Создайте соединение для каждого потока.Я бы предложил создать вспомогательный класс, чтобы вам было проще.

4 голосов
/ 01 декабря 2011

Да, будет проблема. Только одна команда может быть выполнена за один раз. Но вы будете в порядке, используя несколько соединений, пул соединений отлично работает для сервера SQL.

0 голосов
/ 02 декабря 2011

Я хочу использовать одно соединение с базой данных из нескольких потоков для чтения (или для выполнения только выберите операторы) в MS SQL Server одновременно

Вы должны начать читать документацию и не начинать с забавных идей, которые вам нужны, здесь.

Да, вы МОЖЕТЕ сделать это (MARS - это тема, прочитайте ее), но одно соединение всегда может иметь только один контекст транзакции, так что это хороший подход для выбора нескольких вариантов в одной транзакции (вставка, пара переходов и т. Д.) но плохо как универсальный подход для программирования соединений с базой данных.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...