2012-08-05 5 views
0

저는 약 125 000 개의 행을 가진 데이터베이스를 가지고 있습니다. 각 행에는 기본 키, 몇 개의 int 열 및 몇 개의 varchars가 있습니다.
int 열을 추가했으며 null 제약 조건을 추가하기 전에 채 웁니다.HSQL 간단한 하나의 열 업데이트가 영원히 실행됩니다.

db는 스크립트 파일에 유지됩니다. 나는 영향을받은 모든 행이 실제 업데이트 전에 메모리에로드된다는 어딘가를 읽었습니다. 즉, 모든 행에 디스크를 쓰지 않을 것입니다. 전체 db는 약 20MB이며 이는로드하는 것을 의미하며 업데이트를하는 것은 상당히 빠릅니다. 맞습니까?

그래서 조인이없고 중첩 된 쿼리도없고 기본 업데이트도 없습니다. hsql jar에 번들 된 DB 관리자를 포함하여 여러 DB 관리자를 시도했습니다.

업데이트 쿼리는 결코 실행되지 완료

1 = COL1 설정 TBL1.

답변

1

메모리가 부족한 것 같습니다.

이 작업을 수행하는 더 쉬운 방법은 DEFAULT 1을 사용하여 열을 정의하는 것입니다. DEFAULT 1은 테이블의 크기에 관계없이 많은 메모리를 사용하지 않습니다. 동시에 null이 아닌 제약 조건을 추가 할 수도 있습니다.

ALTER TABLE T ADD COLUMN C INT DEFAULT 1 NOT NULL 
+0

이 작업을 끝내고 나중에 기본값을 삭제합니다. 감사. – cbaby

관련 문제