나는 하루에 수십만 개의 레코드가 채워지는 SQL 서버 2k8 데이터베이스를 가지고있다.퍼시스턴트 db 연결과 열기 및 닫기
현재 db를 호출하고 n 개의 레코드를 검색하여 처리하고 일부 데이터를 db에 다시 쓰는 코드를 작성 중입니다.
는function xyz() {
conn = conn creation code
conn.open();
while(not last record) {
select next 1000 records
process each record
last record = true
}
conn.close();
xyz();
}
기본적으로 배치 당 하나의 연결을 만드는 :
내가이 (사이비 코드)를 어떻게 볼 두 가지 방법이 있습니다. 두 번째 방법 :
function xyz() {
conn = connection creation code
while(conn.open();) {
select next 1000 records
process each record
last record = true
}
conn.close();
xyz();
}
나는 더 나은 연습이 궁금합니다. 나는 그것이 후자 인 것처럼 느낀다. 그러나 그것은 또한 나의 DB에 더 많거나 적은 영구/영구 연결을 가질 것이다. 나는 메모리 오버런이나 그와 같은 것에 대해 걱정하고있다.
생각하십니까?
스콧
mhhh ... 큰 거래를 할 수 없으므로 메모리 문제가 발생하지 않습니까? 분명히 그 연결을 열어서는 안되며 항상 닫아야한다고 생각합니다. –
오픈 메서드가 void이므로, 기술적으로는 (conn.open()) 동안은 할 수 없습니다. 그래서 아무 것도 반환하지 않습니다. bool로 변환 될 수 있음). 큰 거래? 그래서 1000 레코드? 아니면 모두를 위해서? 분명히 그것들 모두는 작동하지 않을 것이다. 왜냐하면 그것이 실패하고 롤백되면, 데이터 손실 = 거대한 것이기 때문이다. –