Sql 서버 데이터베이스 연결 을 매번 열 어야 합 니까?
2137 단어 C#.NET
asp 와 phop 프로 그래 밍 을 사용 할 때 모두 이렇게 처리 합 니 다.
나중에 자바+hibenate+my sql 을 사용 하여 hibenate 를 통 해 연결 풀 을 설정 합 니 다.
new HibernateEntityLoader().getSession()을 직접 통과 할 수 있 습 니 다.데이터베이스 연결 을 얻 었 습 니 다.연결 효율 이나 문제 가 있 는 지 고려 하지 않 았 습 니 다.
이전에.Net 으로 C/S 구 조 를 쓴 프로그램 은 클 라 이언 트 가 데이터 베 이 스 를 직접 연결 했다.선배 가 나 에 게 SqlConnection 은 매번 열 필요 가 없고 계속 열 수 있 으 며 마지막 에 닫 을 수 있다 고 말 했다.
나 는 매번 데이터 베 이 스 를 조작 하고 문 을 열 고 닫 는 것 이 귀 찮 지 않 겠 느 냐 고 느 꼈 다.그래서 이런 방식 을 채택 했다.
최근 에는 서버 쪽 을 쓰 고 웹 서비스 방식 을 사용 하여 클 라 이언 트 가 데이터 베 이 스 를 직접 연결 하지 않 습 니 다.
테스트 할 때 DataReader 가 닫 히 지 않 은 오 류 를 발 견 했 습 니 다.SqlDataReader 를 사용 하지 않 았 지만 오류 가 발생 했 습 니 다.데이터베이스 연결 이 부족 할 것 같 습 니 다.충돌 이 야?더 중요 한 것 은 일정 시간 간격 으로 클 라 이언 트 가 로그 인 할 수 없습니다.연결 이 초기 화 되 지 않 았 음 을 표시 합 니 다.비록 저 는 10 분 마다 데이터베이스 연결 을 활성화 하지만.
그래서 10 개의 정적 데이터베이스 연결 을 추 가 했 습 니 다.매번 에 Open 상태의 연결 을 무 작위 로 가 져 왔 습 니 다.그 결과 이번 클 라 이언 트 가 잘못 보 고 했 습 니 다.클 라 이언 트 방문 에 따라 얻 은 SessionID 가 다 르 지만 돌아 오 는 DataTable 이 연결 되 어 있 고 다른 클 라 이언 트 가 돌아 온 데 이 터 는 다른 클 라 이언 트 로 갑 니 다.
그래서 어 쩔 수 없 이 오픈 과 Close 를 솔직하게 사용 할 수 밖 에 없 었 다.그러나 매번 Open 과 Close 가 효율 에 영향 을 미 치 는 지 의문 이다.
오늘 테스트 를 했 는데 순환 이 완료 되 었 고 첫 번 째 시간 차 이 는 177 밀리초 였 으 나 모두 89 밀리초 로 유지 되 었 다.이제 안심 하 세 요.정말 한 네티즌 의 말 에 들 어 맞 았 습 니 다.Sql Server 는 그렇게 멍청 하지 않 습 니 다.그 는 자신의 연결 탱크 를 잘 관리 할 것 입 니 다.
//
string connString = "Data Source=127.0.0.1;Initial Catalog=dbname;Integrated Security=False;User Id=it;Password=it";
DateTime startDate = DateTime.Now;
for (int i = 0; i < 10000; i++)
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = connString;
conn.Open();
SqlCommand comd = new SqlCommand();
comd.Connection = conn;
comd.CommandText = "select getDate()";
comd = null;
conn.Close();
}
Console.WriteLine(DateTime.Now - startDate);
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
C# 속성 변경 사항 모니터링, 메서드 실행수요: 주함수에서 다른 클래스의 속성을 감시해야 하고 속성에 변화가 발생하면 주함수가 있는 클래스에서 어떤 방법을 실행해야 한다. code:...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.