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 8529 게시물 읽기
No. 8529
pgsql의 Data 저장의 관하여 query 속도 문의
작성자
성진(sungthcom)
작성일
2009-10-23 10:13ⓒ
2009-10-23 13:14ⓜ
조회수
8,827

안녕하세요~


항상 많은 정보를 얻어 DSN 감사하고있는 초급개발자 입니다.^^


다름이 아니라 .. 제가 DB를 설계하고 현재 업무에 사용하고 있는데 궁금한점이 있어서 이렇게 글을 올립니다.



우선 pgsql의 schema를 두개를 나뉘어 쓰고 있습니다.


Schema

- log : 순수 로그 저장 스키마

- public : 업무 스키마


이렇게 만들어서 사용중에 있습니다.



문제점은 두개의 log Schema의 로그 저장 Table 의 insert와 업데이트가 이루어지는데


(현재 쌓여있는 Data는 4만건 정도입니다.)


이 로그저장 Table의 질의를 하면 Data가 엄청나게 많은것도 아닌데 속도가 느려진다는 것입니다.


그래서 Public의 스키마의 Query 질의의 속도의 영향을 주고, 락이 걸려 Query가 빠지지 않습니다.


DB과부하가 계속 걸려서 webpage가 엄청난 속도로 느려진다는 것입니다. T.T 


explain에서는 전혀 문제가 없는데요.. 조건도 간단한거라..



아래 Table과  Query/plan도 같이 첨부합니다.


한번 읽어보시고 고언 부탁드립니다(__) ;



-- 질의 Table

CREATE TABLE log.server_log_range_1

(

  server_log_range_idx serial NOT NULL,

  flag integer, 

  client_ip inet,

  id character varying, 

  pwd character varying, 

  nn character varying, 

  ver character varying, 

  cdkey character varying, 

  tf_flag boolean, 

  connetion_time timestamp with time zone, -- 접속시간

  log_time timestamp with time zone, -- 로그시간

  user_ip inet, 

  CONSTRAINT log_server_log_range_1 PRIMARY KEY (server_log_range_idx)

)

WITH (OIDS=TRUE);

ALTER TABLE log.server_log_range_1 OWNER TO apache;


-- talb의 null값이 존재합니다.



-- 질의 Query

SELECT server_log_range_idx AS max_log_idx

 , flag AS max_flag

FROM log.server_log_range_5

WHERE client_ip='172.11.142.208'

ORDER BY server_log_range_idx DESC

LIMIT 1 OFFSET 0


-- 질의 Query plan

"Limit  (cost=0.00..474.19 rows=1 width=8)"

"  ->  Index Scan Backward using log_server_log_range_5 on server_log_range_5  (cost=0.00..86776.02 rows=183 width=8)"

"        Filter: (client_ip = '172.11.142.208'::inet)"

이 글에 대한 댓글이 총 8건 있습니다.

1. 운영중 log 쪽에 실제 insert,update,select 의 각1건의 실제 실행 시간은 얼마나 되나요(explain analze)?
2. update 는 얼마나 자주 이루어지나요 (매접속시 or 처음 접속시 or 일정 시간접속시마다 or 하루1번...)
3. 운영중 insert,update,select속도와 vacuum full 직후 insert,update,select속도는 어떻게 다른가요
4. postgresql 서버의 버젼은?

그냥님이 2009-10-23 10:40에 작성한 댓글입니다.
이 댓글은 2009-10-23 10:43에 마지막으로 수정되었습니다. Edit

우선 댓글 감사합니다!!(__)
빨랑 달아야지~

1.insert/update는 전혀 시간에 이상없이 들어갑니다. 하지만 SELECT시에는 한번지연이 되면
 5분이 넘도록 Query를 질의 하고 있습니다.
2.UPDATE는 10분에 한번씩 이루어집니다. 대역별로 저장되는거라 전혀다른 IP들이 계속 들어가고요...
  그 IP에 대해서 계속 인서트/업데이트가 이루어 집니다.
3.아직 VACUMM는 한번도 안했습니다. Data도 별로 없는데다. 매번 VACUUM을 할수없러요
  아마도 FULL을 하고나면 속도가 현저히 올라갈것으로 예상됩니다.
4. 8.3 대 버젼입니다.

성진(sungthcom)님이 2009-10-23 13:14에 작성한 댓글입니다.

고수분이 알려주셔야겠지만

1. update도 해당 row를 복사하고 수정하기 때문에 insert와 부하에 주는 영향이 비슷하다고 생각합니다

2. Checkpoints작업중 느려지는게 아닐까 추측해봅니다 5분간 느려질때 ps aux 로 postgresql 서버가 무었을 하고 있는지 살펴봐 보세요

3. 공개가능하다면 postgresql.conf 중 기본설정에서 변경한 부분을 올려주시면 답변에 도움이 될거라고 생각합니다

그냥님이 2009-10-23 14:02에 작성한 댓글입니다. Edit

댓글 감사합니다~ ^^;;

우선 말씀해보신거를 실행해보고 다시 답변달겠습니다 (__) 감사합니다.

성진(sungthcom)님이 2009-10-26 15:26에 작성한 댓글입니다.

where 조건으로 들어오는 client_ip 컬럼에는 인덱스가 잡혀 있나요?

SHK(rusion)님이 2009-10-26 16:42에 작성한 댓글입니다.

INSERT 와 UPDATE가 빈번이 일어나 현재 인덱스를 안건상태입니다.

제가 예전에 듣기로 UPDATE나 INSERT가 많은 Table에는 INDEX를 걸지 말라고 해서

안걸었는데.. 

제가 틀린건가요?

성진(sungthcom)님이 2009-10-26 17:18에 작성한 댓글입니다.

INSERT와 UPDATE가 빈번히 일어난다 해도, 말씀하신 정도의 데이터량에서는 인덱스를 추가하는 것이 INSERT 속도에 영향을 주지 못하지 않을까 생각해봅니다. 인덱스를 지나치게 많이 거는 것은 확실히 좋은 방법은 아니지만, 적절한 인덱스 설정을 통해 SELECT 성능을 향상시키는 것이, 서비스에서는 결국 UPDATE/INSERT Locked time을 줄여 성능을 향상시켜주는 것이 아닐까요.

기본적으로 리얼 서비스에서 lock이 걸릴만한 쿼리는 주지 않는 것이 옳겠습니다만, 필요하다면 백업 DB나 복제 DB쪽에서 하시는 방법은 어떨런지요.

박현우(lqez)님이 2009-10-26 18:35에 작성한 댓글입니다.

답변 감사합니다 (__)

그렇쿤요.. 현재 Data에서는  INDEX가 특별한 영향을 주지 않을수도 있겠네요.

지금 현재 작업은 Test DB에서 진행하고 있습니다만. 사용 system에서와의 차이가 현저히

나네요.. 같은 Data양의 똑같은 Query를 질의 하였을때 속도차이가 납니다.

또한 Test DB의 INDEX를 걸어도 속도의 향상이 없네요 --;;(갈길이 멉니다.)

사용 system에서는 과부하 문제로 인하여 INDEX를 거는것은 아직 결정지지 못하고 있고.,

아! 혹시 INDEX culum의 Data type이 inet, timestamp인것의 문제가 있지않나요..

예전 글중에 날짜형은 INDEX를 타지 못한다고 되어있어서...

고언 부탁드립니다(__)

성진(sungthcom)님이 2009-10-27 11:07에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
8532public 스키마를 사용 안해야 하나요? [4]
이정원
2009-10-27
8748
8531PostgreSQL UNIX/Linux 설치 옵션 참고
김대청
2009-10-27
8113
8530한글 데이터를 copy로 내리는데 fixed length로 보이지 않군요. [4]
박춘삼
2009-10-26
7609
8529pgsql의 Data 저장의 관하여 query 속도 문의 [8]
성진
2009-10-23
8827
8528한글 문제... [2]
박병호
2009-10-23
8236
8527null sort 문제 [1]
질문자
2009-10-20
7194
8526Alter Table drop coumn 시의 해당테이블을 타입으로 리턴하는 함수 문제 [6]
김석래
2009-10-15
7901
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다