Q & A

Re: Re: 아래 script 좀 분석해주세요..

Date2002.12.02 / Hit : 14507
이왕 시작한김에 ...
이왕 시작한김에 ... parse calls 는 sql을 수행하기 위해서 parsing 을 수행한 횟수를 말합니다. executions 는 이 SQL 을 수행한 횟수를 말합니다. 일반적으로 executions 는 parse calls 보다 큰값을 가지게 되죠. 이유는 수행시에 shared pool 에 같은 SQL 이 존재하면 parsing 과정은 생략되므로 그렇습니다. 만약 존재 하지 않는다면 parsing 과정이 수행돼겠죠. 말씀하신 거 처럼 binding 변수를 사용하는 SQL 문은 한번 파싱되어 계속 수행할수 있습니다. 님께서 보여주신 문장은 Pro*C 혹은 Pro*Cob 등인거 같습니다. 이런종류의 오라클 퉅ㄹ에서는 바인딩 기능은 제공하며 한번 파싱으로 여러 사용자 혹은 프로그램을 통해 사용될수 있습니다. 다른 DB user 라면 loaded version 등으로 구분하여 공유하게 됩니다. 어쩻든 바인딩 되어 있는 SQL 이고 서로 공유할수 있음에두 파싱( parse calls) 이 횟수가 많은 이유가 궁금해 질겁니다. 제가 추측건데 이 SQL 은 연속해서 805,576 을 수행한 것으로 보여지지는 않습니다. 즉 다른 여러 SQL 들과 섞여서 간간이 수행된것으로 생각됩니다. (여기서 간간이는 컴퓨터 시간으로 보시면 좋을듯) 또 여러 종류의 SQL(dynamic 포함) 과 함께 수행된거 같습니다. SQL 이 파싱되어 수행방법정보를 가진 메모리는 무한정 크지 않습니다. 즉 새로운 SQL 이 올라오면 방을 빼야 하는 운명에 처해지는 SQL 도 계속생기는거죠. 이럴 경우 방뺏던 SQL 이 다시 수행될경우는 shared pool 에 없으므로 다시 파싱될 겁니다. 한번 파싱된것이 계속 수행되는 것은 아주 좋은 경우입니다. 하지만 자주 수행(805,576번)되는 SQL 이 파싱도 잦다면 님이 사용하시는 DBMS는 사용에 있어서 뭔가 문제 점이 있다고 생각됩니다. (무슨 문제가 있는지는 숫자 몇개만 가지고는 추측불가능) 뭐라구 두서 없이 막쓰긴했는데 이해가 가셨으면 좋겠네요.

---------- Original Message ----------
이름 : 박승준 제목 : 한가지더요.. 먼저 질문에 응답 감사 드립니다. 질문에 query 문은 insert into a values(:b1,:b2,:b3,sysdate); 라고 store procedure 에 analysis한 결과 인데요. bind variable 을 이용하면 parsing 은 한번만 된다구 들었는데.(강의때) 위에서 Executions : 805,576 이라고 나온것은 어떤건지요. 즉 parsing 된 query 문에 총실행 횟수가 805,576번이인건지. 아니면 제대로 (bind variable) parsing 이 안된건지..궁금하네요.. 즉 execuions :1 이 되야 되는게 맞는거 아닌가 해서요. 아니면 제가 bind variable query 를 잘못 만들은 건지요.
  • 대표전화
    1660-1675

  • 기술 문의
    02-6931-1734

  • 오렌지 문의
    070-8666-8175

  • 라이선스 문의
    02-6931-1728