database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 8680 게시물 읽기
No. 8680
plpgsql의 Procedure안에서 다수의 SQL문을 수행한 시간을 측정하고 싶었습니다.
작성자
장대성(totjang)
작성일
2010-07-01 16:38
조회수
8,351

10000개의 insert문을 수행하고, 수행 시간을 측정하고 싶습니다. 

그래서 아래와 같은 프로시저를 만들었습니다. 처음에 선언하는 곳에서 l_start라는 변수에 프로시저의 처음 진입시에 시간을 측정하고

모든 쿼리 수행후의 시간을 l_end 라는 변수에  저장해서 l_end - l_start 라는 오퍼레이터를 통해서 시간을 계산하려고 했습니다.

 

CREATE OR REPLACE FUNCTION clean_emp_test1( l_start timestamp with time zone ) RETURNS interval  AS $$

DECLARE 
l_end timestamp; 
BEGIN
FOR i IN 1.. 10000 LOOP
insert into "test"(id) values( 'hi' ); 
END LOOP;
 
l_end  := now();
return l_end - l_start;
END;
$$ LANGUAGE plpgsql;
 
 
 
이렇케 Function을 하나 만들고, 수행 하니까. 항상.  00:00:00 반환됩니다. 도대체 왜 이럴까요. ㅜㅜ 오라클 은 요로케 하면 잘만 됐는뎅
고수님들 도와주세요. .. 그리고. 밀리세컨 단위로도 출력 하고 싶은데, 잘안되요.. 도대체가. ㅠㅠ
이 글에 대한 댓글이 총 1건 있습니다.

l_start timestamp with time zone 이고요,

 

now() 대신에 clock_timestamp() 쓰세요.

 

current_timestamp 값을 트랜잭션 내에서 사용하는 정책이 오라클과 틀려서 그렇습니다.

 

자세한 이야기는 이곳 게시판 '트랜잭션 시간' 검색하면 많이 나올겝니다.

 

김상기(ioseph)님이 2010-07-20 18:32에 작성한 댓글입니다.
이 댓글은 2010-07-20 18:36에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
8683pgsql을 mysqladmin이나 mysql -e옵션처럼.. [3]
김창현
2010-07-09
8454
8682MinGW로 설치. [1]
진은수
2010-07-02
8160
8681pg_dump 시 나타나는 알수 없는 에러,,,ㅠ [3]
김영호
2010-07-02
9174
8680plpgsql의 Procedure안에서 다수의 SQL문을 수행한 시간을 측정하고 싶었습니다. [1]
장대성
2010-07-01
8351
8678오늘을 기준으로 지난주 일자와 지난달 시작일자와 마지막일자를 구하고 싶습니다 [2]
일쌍다반사
2010-06-29
10834
8677도와주세요.. [3]
초보
2010-06-28
7656
86769.0 이야기 [3]
김상기
2010-06-12
8338
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다