2014-04-28 3 views
3

우리는 .NET MVC 웹 응용 프로그램에서 사용하는 MySQL 데이터베이스가 있습니다. 커넥션 풀링은 성능 향상에 도움이되므로 구현합니다..Net 연결 풀링 MySQL 임시 테이블

또한 몇 가지 주요 저장 프로 시저에서 상당히 많은 처리가 이루어졌습니다.

연결 수명 동안 유효한 여러 임시 테이블과 사용자 변수를 만듭니다. 그러나 풀링을 사용하면 이러한 개체가 다시 설정/제거되지 않습니다.

이 시나리오에서 사용자 변수를 다시 초기화하고 임시 테이블을 삭제/다시 작성해야합니까?

연결은 그래서 두 개의 SP 년대 그래서 대답은 간단하기 전에 임시 테이블을 삭제 한 등

+0

연결당 대신 트랜잭션 당 임시 개체를 처리하려고합니다. –

+0

연결이 닫힌 경우에만 임시 테이블이 삭제되므로 연결 풀링과 함께 사용하는 것은 좋지 않습니다. 진짜 테이블은 어떨까요? –

답변

2

을 임시 테이블을 채우기/실행되는 모든 동시성 문제가 없어야 동시에 액세스 할 수 없습니다 보장 매번 재생성. 한 번에 하나의 명령 만 실행할 수 있으므로 동시성 문제는 없습니다.

+0

다음 오류가 계속 발생하면서 .NET 연결 풀링으로 인해 임시 테이블을 처리 할 때 문제가 발생했음을 확인할 수 있습니다. MySql.Data.MySqlClient.MySqlException : 테이블 'blah'가 이미 있습니다. 임시 테이블을 만들기 전에 각 쿼리의 끝에서 테이블을 삭제하거나 바로 삭제하는 것은 이전 연결이 실제로 닫혔다는 것을 보장 할 수있는 방법이 없으므로 매번 작동하는 유일한 솔루션이었습니다. 흥미롭게도 두 명령 사이에 매우 긴 잠을 쓴다면 동일한 임시 테이블을 사용하므로 첫 번째 연결은 결국 임시 테이블을 "닫습니다". –