2014-12-30 3 views
0

나는 다음과 같이 저장 프로 시저를 호출 오전 :callproc를 통해 저장 프로 시저를 호출하면 캐시가 부 풀리니까?

conn.autocommit(True) 
with conn.cursor(as_dict=False) as cur: 
    cur.callproc(proc_name, query_params) 
    return list(cur) 

프로파일 러는 이러한 호출을 보여줍니다

RPC:Completed exec dbo.SelectCustomer 'Jane', 'Doe' 
(snip) 
RPC:Completed exec dbo.SelectCustomer 'John', 'Doe' 

수있는 서버에이 원인 캐시 부풀게?

+0

SQL Server는 저장 프로 시저에 대한 캐시 된 실행 계획을 다시 사용한다는 것을 알고 있습니다. –

답변

2

아니요. 쿼리 계획이 계획 캐시에 남아있는 한 해당 저장 프로 시저가 호출 될 때 다시 사용됩니다. - 메모리가 필요

  1. 메모리 압력 :

    SELECT * 
    FROM sys.dm_exec_cached_plans a 
    CROSS APPLY sys.dm_exec_sql_text(plan_handle) b 
    CROSS APPLY sys.dm_exec_query_plan(plan_handle) c 
    WHERE text LIKE '%SprocName%' 
    AND b.dbid = DB_ID('DatabaseName') 
    ORDER BY a.size_in_bytes desc 
    

    는 쿼리 계획이 계획 캐시에서 제거 할 수있는 몇 가지 이유가 있습니다 :이 쿼리 계획 캐시에서 쿼리 계획을 확인할 수 있습니다 새로운 계획을 위해, 오래된 미사용 것들은 제거됩니다.

  2. SP에서 사용 된 테이블, SP 변경 사항, SP에서 사용하는 인덱스 변경 사항, 통계 변경 등을 비롯한 데이터베이스의 변경 사항.

Microsoft는이 항목 here에 대해 자세히 설명합니다.

+0

쿼리를 몇 번 실행하고 usecount가 증가하는 것을 목격했습니다. 감사! 불행히도, 텍스트라는 컬럼은 CREATE PROCEDURE로 시작하는데, 잠시 나 혼란 스러웠습니다. 프로 시저를 작성하지 않고 그냥 실행했습니다. – AlexC