NHibernate에 프로파일 러는 쿼리 계획에 대한 오류 메시지를 많이 보여줍니다다른 매개 변수의 크기는 비효율적 인 쿼리 계획 캐시에 결과
다른 매개 변수의 크기는 비효율적 인 쿼리 계획 캐시 사용 결과를 그것은 또한 당신을 리드
자세한 내용은 http://nhprof.com/Learn/Alerts/UncachedQueryPlan에 있으며 세션을 만들 때 prepare_sql = true
매개 변수 사용에 대해 경고합니다. 나는 그런 식으로 유창하게한다.
그러나 그것은 오류 메시지가 여전히 존재하기 때문에 작동하지 않는 것으로 보인다. OracleClientConfiguration에 대한 제한 사항입니까 아니면 잘못하고 있습니까?
편집 이것에 대해 좀 더 많은 정보를 제공하기 위해 ... 내 저장소에서
나는이
session.Query<TEntity>.Where(predicate).ToList();
할이 인스턴스 분들을 위해 전화
var value = ParameterRepository.First(p => (p.Pipeline.Id == pipelineId && p.Name == name));
입니다 이 호출에서 생성 된 두 개의 SQL이고 nhibernate 프로파일 러는 "DIfferent 매개 변수 크기로 인해 비효율적 인 쿼리 계획 캐시가 발생합니다 나이 "
select GUID1_12_,
PARAMETER2_12_,
PARAMETER3_12_,
GUID4_12_
from (select pipelineex0_.GUID_PIPELINE_EXEC_PARAMETER as GUID1_12_,
pipelineex0_.PARAMETER_NAME as PARAMETER2_12_,
pipelineex0_.PARAMETER_VALUE as PARAMETER3_12_,
pipelineex0_.GUID_PIPELINE_TRACKING as GUID4_12_
from FCT_PIPELINE_EXEC_PARAMETER pipelineex0_
where pipelineex0_.GUID_PIPELINE_TRACKING = 'A5916E73CF1E406DA26F65C24BFBF694' /* :p0 */
and pipelineex0_.PARAMETER_NAME = 'lid' /* :p1 */)
where rownum <= 1 /* :p2 */
및
select GUID1_12_,
PARAMETER2_12_,
PARAMETER3_12_,
GUID4_12_
from (select pipelineex0_.GUID_PIPELINE_EXEC_PARAMETER as GUID1_12_,
pipelineex0_.PARAMETER_NAME as PARAMETER2_12_,
pipelineex0_.PARAMETER_VALUE as PARAMETER3_12_,
pipelineex0_.GUID_PIPELINE_TRACKING as GUID4_12_
from FCT_PIPELINE_EXEC_PARAMETER pipelineex0_
where pipelineex0_.GUID_PIPELINE_TRACKING = 'A5916E73CF1E406DA26F65C24BFBF694' /* :p0 */
and pipelineex0_.PARAMETER_NAME = 'period' /* :p1 */)
where rownum <= 1 /* :p2 */
이럴 두 번째는 '뚜껑'다른 쿼리 계획을 생성하는 '기간'이 PARAMETER_NAME입니다. 미리
그래서 다른 Oracle 실행 계획은 무엇입니까? – steve
오라클 질의 계획은 어떻게 지금은 의존하지 않지만 [시나리오에 대한 ayende의 설명에서 지적한 시나리오] (http://nhprof.com/Learn/Alerts/UncachedQueryPlan)와 매우 비슷합니다. 간단히 말해 그것은 nhibernate가 _ 친숙한 쿼리 계획에서 쿼리를 실행하기 위해 확신해야한다는 것을 의미합니다. 그리고 내가보기에는 작동하지 않습니다. – guillem
음, 좀 더 분석적인 접근법을 권하고 싶습니다. 그렇지 않으면 시행 착오입니다. 오류가 무엇입니까? – steve