programing

커서를 재사용하는 것과 새 커서를 만드는 것의 단점은 무엇입니까?

goodsources 2023. 7. 20. 21:54
반응형

커서를 재사용하는 것과 새 커서를 만드는 것의 단점은 무엇입니까?

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

반응형