반응형
커서를 재사용하는 것과 새 커서를 만드는 것의 단점은 무엇입니까?
cx_Oracle(또는 일반적으로 Oracle)에서는 각 쿼리에 대해 커서를 할당하거나 여러 쿼리에서 커서를 재사용할 수 있습니다.
def getSomeData(curs): # case 1: pass in a cursor, which is generally
curs.execute('select ...') # reused across queries
return curs.fetchall()
def getSomeData(conn): # case 2: pass in a connection,allocate
curs=conn.cursor() # a cursor for this query
curs.execute('select ...')
return curs.fetchall()
물론 두 가지 접근 방식 모두 동일한 데이터를 반환합니다.
두 접근법 사이의 절충점은 무엇입니까?하나가 특별히 더 효율적입니까 아니면 덜 효율적입니까?많은 쿼리에서 커서를 재사용할 경우 잠재적인 위험이 있습니까?
cx_Oracle 커서는 얼마든지 다시 사용할 수 있습니다. 문제 없습니다.수천 개의 작은 쿼리를 짧은 시간 내에 실행하는 경우 커서를 다시 사용하면 성능이 약간 향상될 수 있지만, 저는 그렇게 생각하지 않습니다.
코드를 읽고 이해하기 쉽게 만드는지 여부에 따라 새 커서를 만들기도 하고 기존 커서를 다시 사용하기도 합니다.
예를 들어 데이터베이스에 액세스해야 하는 다양한 절차가 있는 경우 Oracle 연결 개체를 전달하거나 해당 연결에 생성된 커서를 전달할 수 있습니다.
당신의 코드를 더 읽기 쉽고 유지하기 쉽게 만드는 것이 제가 원하는 것입니다.
언급URL : https://stackoverflow.com/questions/2035212/what-are-the-tradeoffs-of-reusing-a-cursor-vs-creating-a-new-cursor
반응형
'programing' 카테고리의 다른 글
전원 셸 콘솔에 새 라인 반향 (0) | 2023.07.25 |
---|---|
@Json이 속성을 무시하는 것({"hibernateLazy")이니셜라이저", "핸들러"}가 가능합니까? (0) | 2023.07.20 |
아이폰용 스크린샷 앱 시뮬레이터 (0) | 2023.07.20 |
오라클 테이블에서 새 행 문자를 검색하는 방법은 무엇입니까? (0) | 2023.07.20 |
오라클 시스템 스탬프(날짜 변경) - 밀리초 (0) | 2023.07.20 |