ado.net 연결 풀 효과
2047 단어 .net
//
string constr = "Data Sourse=zxtiger; Initial Catalog=itcastcn;Integrated Security=True";
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 2000; i++)
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
con.Close();
}
}
watch.Stop();
Console.WriteLine(watch.Elapsed);
Console.ReadKey();
// ,
//
string constr = "Data Sourse=zxtiger; Initial Catalog=itcastcn;Integrated Security=True;Pooling=false";
Stopwatch watch = new Stopwatch();
watch.Start();
for (int i = 0; i < 2000; i++)
{
using (SqlConnection con = new SqlConnection(constr))
{
con.Open();
con.Close();
}
}
watch.Stop();
Console.WriteLine(watch.Elapsed);
Console.ReadKey();
연결 탱크는 기본적으로 열려 있습니다. 연결 탱크가 비활성화되면
//00:00:00.1383385//00:00:03.9974913
앞뒤 차이
이른바 연결 탱크란 연결 대상과 연결된 집합이다. 이것은 간단한 집합이 아니라 일정한 메커니즘이 내부에 있다.우리는 개발을 할 때 연결 대상을 만들고 연결 대상을 닫을 수도 있고 디스포지션을 호출해서 연결을 풀 수도 있습니다.다음에 다시 사용할 때 연결을 다시 실례화합니다.그러나 풀의 연결은 연결 개체의 Close 또는 Dispose와 함께 해제되지 않습니다.다음에 연결을 다시 만들면 연결 문자열이 이전과 완전히 같으면, 연결 탱크는 지난번에 사용할 수 있는 연결 대상을 연결에 부여합니다.만약 두 연결 문자열이 조금 다르다면, 어느 곳에 빈칸이 하나 더 있어도 연결 탱크는 같은 연결이라고 생각하지 않을 것이다. 이 점에서 마이크로소프트는 내부에서 두 문자열만 직접 비교할 수 있을 것이다. 데이터베이스 문자열의 키 값이 서로 일치하는 것이 아니라.
연결 탱크의 장점은 연결 대상을 보존하고 다음에 다시 연결 대상을 실례화하는 것을 방지하는 것이다.
매번 정상적으로 데이터베이스에 연결할 때마다 최소한 3개 조작(1. 데이터베이스 서버에 로그인 2. 조작 수행 3. 사용자 로그아웃)을 실행하기 때문에 매번 Connection을 통해 데이터베이스 서버에 연결을 신청할 때마다 비교적 시간이 걸린다[ado.net은 기본적으로 연결 탱크를 사용한다]
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
AS를 통한 Module 개발1. ModuleLoader 사용 2. IModuleInfo 사용 ASModuleOne 모듈...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.