는 PostgreSQL의 버전 : 포스트 그레스 플러스 고급 서버 9.2
운영 체제 : Windows 7/8PostgreSQL의 잠금
내가 그것을 같은 역할을 저장 프로 시저는 다음과 같습니다
1. 을 지 웁니다 에 전달 된 매개 변수의 몇 가지를 기반으로보기에서 표
2. 선택 (항상 동일한보기) WHERE 절 (예를 위해서 항상 동일한 매개 변수)
3. 테이블 1에 위의 선택 결과를 삽입하십시오. 5
BEGIN
PERFORM clear_table1(p_session_id);
INSERT INTO table1 (session_id, id1, adress, x, y)
SELECT p_session_id, id1, adress, x, y
FROM myview
WHERE (CONDITION)
AND (CONDITION)
AND (CONDITION)
AND (lower(adress) LIKE lower(p_adress) OR p_adress IS NULL)
LIMIT 6000;
END;
첫 번째 시간 (항상 5 회) 나는 동일한 매개 변수를 사용하여 동일한 쿼리를 실행을 예상대로 실행, 다음과 같이
절차의 몸이 보인다. 다음 번 (6 번째) 그것은 엄청난 시간 동안 움직입니다. 수십 분.
select * from myfunction('session_id',NULL,NULL,'%adress%')
서버 상태에서 PostgreSQL의 관리자에서보기, 나는보기가 채워되는 테이블과 함께 를 삽입하는 테이블에 대한 추가 잠금의 수를 관찰
수있는 사람과 PostgreSQL 환경에서이 동작을 해결할 수있는 설정이 있는지 알려주십시오. 또는 PG를 사용하는 다른 사람에게 이와 비슷한 일이 발생 했습니까?
감사합니다 !!!
나중에 편집 : - : 우리가 명시 적으로 저장 프로 시저
1) 호출간에 커밋합니까? 2) 다른 세션에서 발행 된 6 개의 호출입니까? – wildplasser
나중에 편집하십시오 – tartak
왜 테이블을 지우는 기능을 사용합니까? 왜'delete from table' 또는'truncate table'만이 아닌가? – wildplasser