Посилання на статтю таке:
http://www.cnblogs.com/LoveJenny/archive/2011/10/31/2229738.html
1: Чи безпечний SqlConnection у потоках?
Відомо, що використання Connection для виконання Sql-оператора в багатопотоковому середовищі — цеНебезпечноЦіль.
SQL Connection не є безпечним для потоків, тому багатопотокність обов'язково стане проблемою. Насправді, .NET автоматично забезпечує керування пулом з'єднань: якщо рядок з'єднання однаковий (має бути точно таким самим), він буде в тому ж пулі, відкриті та закриті пристрої фактично беруть з'єднання з пулу і повертають його назад у пул, що не спричиняє проблем із продуктивністю. Тому після відкриття кожного з'єднання його слід закрити якомога швидше після використання, щоб з'єднання можна було повернути до пулу для використання іншими програмами.
2: Чому люди досі використовують наведений вище метод письма для створення Connections?
Думаю, вони можуть вважати, що створення кількох з'єднань займає багато часу, а кілька з'єднань займають пам'ять, впливають на продуктивність тощо.
3: Чи займає кожен новий SqlConnection пам'ять і ресурси, впливаючи на продуктивність?
Це сліпе мислення, сліпе хвилювання.
Тому що«Створення кількох з'єднань» не обов'язково створює кілька нових з'єднань до бази данихПідключення до бази даних є цінним ресурсом, для MS SQL Server цей цінний ресурс оптимізується внутрішньо, і з'єднання буде повторно використано.
Пул з'єднань надається .net, у рядку з'єднання є властивість Pooling, за замовчуванням це істинно, тобто пул з'єднань увімкнений за замовчуванням, це не має нічого спільного з sql-сервером, якщо ви впишете Pooling=false у рядку з'єднання, то пулу з'єднань не буде, це повністю . .NET-оптимізація.
Дослідження наслідків використання одного й того ж з'єднання з базою даних у кількох потоках Посилання на статтю: http://www.th7.cn/Program/java/201503/415005.shtml
Резюме: У багатопотоковому середовищі використання одного з'єднання може спричинити плутанину у транзакціях без безпечної обробки з'єднання.... Впливає на використання транзакцій JDBC...
|