2014-10-30 2 views
0

제 제작 상자의 테이블에 고유 인덱스를 만들려고합니다. 이를 위해 :TimeOut on 고유 인덱스 만들기 동시 수행

  1. 내 생산 (포스트 그레스입니다) DB

    Create UNIQUE INDEX CONCURRENTLY idx_id_unique on TABLE1(COLUMN1) 
    

이 몇 시간 후 (오류 던지고에서 다음 명령을 COLUMN1

  • 란에 테이블 TABLE1을 만들었습니다) :

    2014-10-07 20:46:49.056 EDT ERROR: cancelling statement due to statement timeout

    2014-10-07 20:46:49.056 EDT STATEMENT: Create UNIQUE INDEX CONCURRENTLY idx_id_unique on TABLE1(COLUMN1)

    내 질문 :

    1. 이 시간 초과 오류의 가능한 원인은 무엇일까요? 참고 : 프로덕션 DB 서버이므로 수천 개의 다중 쿼리/트랜잭션이 동시에 실행되므로 CREATE INDEX ....에는 상당한 시간이 걸립니다. 그러나 여전히,이 쿼리는 타임 아웃 예외를 던질 것인가?
    2. CREATE UNIQUE INDEX CONCURRENTLY에 대한 Postgres의 명령문 제한 시간 초과 오류가 발생합니까? 이 쿼리는 대형 테이블의 경우 완료하는 데 여러 시간이 필요하므로
    3. 이 경우 가능한 해결 방법은 무엇입니까?
  • 답변

    1

    What could be the probable reasons for this timeout failure? Note: As this is production DB server, we have thousands of multiple queries/transactions running concurrently so this CREATE INDEX.... will require a significant amount of time. But still, will this query throw timeout exception?

    글쎄, 당신을 알려줍니다 cancelling statement due to statement timeout. 그래, 네.

    1. Does POSTGRES throw statement timeout error for CREATE UNIQUE INDEX CONCURRENTLY? As this query requires multiple hours to finish for large tables.

    예, 방금 말씀하셨습니다.

    1. What could be the probable workaround for this?

    인덱스를 만드는 세션에 대한 명령문 제한 시간을 늘리십시오.


    편집 : statement_timeout에 설명서를

    잘 세부 사항을 링크를 추가 설명서에 있습니다 http://www.postgresql.org/docs/current/static/sql-set.html

    내가 아무것도 모르는 : 구성 설정도 있습니다 설정하는 방법 마찬가지로 http://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-STATEMENT-TIMEOUT

    당신이 사용하고있는이 TransactionTemplate 물건,하지만 구글은 그것이 문서가 있다고 제안합니다. 아마도 아무것도 아닌 경우 그것을 통해 원시 SQL을 발행 할 수있는 방법이있을 것입니다.

    1. 조심스럽게 제공 읽기 오류 메시지 : 여담으로


      , 당신은 쉽게 만약 당신이 당신의 개발을 찾을 수 있습니다.

    2. 사용중인 소프트웨어의 설명서를 적어도 약간 숙지하십시오.
    3. Google 또는 내장 검색을 통해 # 1과 # 2를 검색 할 수 있습니다.
    +0

    DB에 초보자인데 진술 제한 시간을 어떻게 늘릴 수 있습니까? – SID

    +0

    또한 TransactionTemplate 객체를 사용하여 java에서이 함수를 호출 할 것입니다. 그 한계를 높이는 방법에 대한 아이디어가 있습니까? – SID