이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 19962|회답: 0

[출처] SqlConnection을 올바르게 사용하는 방법, SqlConnection 스레드는 안전한가요?

[링크 복사]
게시됨 2016. 11. 19. 오전 8:46:14 | | |
해당 기사의 링크는 다음과 같습니다:

http://www.cnblogs.com/LoveJenny/archive/2011/10/31/2229738.html

1: SqlConnection은 스레드에서 안전한가요?

멀티스레드 환경에서 Connection 사용으로 SQL 문장을 실행하는 것은 다음과 같이 알려져 있습니다안전하지 않다과녁.

SqlConnection은 스레드 안전하지 않습니다, 그래서 멀티스레딩은 분명히 문제가 될 수밖에 없습니다.
사실 .net은 연결 문자열이 동일(정확히 동일해야 함)이면 같은 풀에 속하며, open과 close가 풀에서 연결을 가져와 다시 풀로 돌려놓는 방식으로, 성능 문제를 일으키지 않습니다. 따라서 각 연결이 열린 후에는 가능한 한 빨리 종료하여 다른 프로그램이 사용할 수 있도록 연결을 풀로 되돌려야 합니다.



2: 왜 사람들은 여전히 위의 글쓰기 방식을 사용해 연결을 만들까요?

여러 연결을 만드는 것이 시간이 많이 걸리고, 여러 연결이 메모리를 차지하거나 성능에 영향을 준다고 생각할 수도 있다고 생각합니다.


3: 모든 새로운 SqlConnection이 메모리와 리소스를 차지하여 성능에 영향을 미치나요?

이건 맹목적인 생각, 맹목적인 걱정이야.

왜냐하면"여러 연결을 생성한다"고 해서 반드시 여러 개의 새로운 데이터베이스 연결이 생성되는 것은 아닙니다데이터베이스 연결은 MS SQL Server에 있어 매우 중요한 자원이며, 이 귀중한 자원은 내부적으로 최적화되고 연결이 재사용될 것입니다.

연결 풀은 .net에서 제공하며, 연결 문자열에 풀링 속성이 있습니다. 기본값은 true입니다. 즉, 연결 풀은 기본적으로 켜져 있습니다. 이는 SQL 서버와는 아무 관련이 없습니다. 연결 문자열에 Pooling=false라고 쓰면 연결 풀이 없고, 완전히 입니다. .NET 최적화.



동일한 데이터베이스 연결을 여러 스레드에서 사용할 때의 결과를 탐구합니다
기사 링크: http://www.th7.cn/Program/java/201503/415005.shtml

요약: 멀티스레드 환경에서 단일 연결을 사용하면 스레드 안전한 연결 처리 없이 트랜잭션 혼란을 초래할 수 있습니다.... JDBC 거래 사용에 영향을 미칩니다...




이전의:javascrip{filter}t: history.go()와 History.back()의 차이점.
다음:C# SQL 데이터베이스 연결 일반적인 연결 문자열
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com