2009-07-01 4 views
0

VARCHAR 또는 VARRAY의 최대 정수 크기를 실제로 필요한 것보다 훨씬 큰 값으로 설정하는 데는 단점이 있습니까 (값 또는 배열의 크기가 커지는 것을 제외하고) 최대 허용 크기까지)?VAR 유형의 큰 LIMIT 결점

답변

2

데이터베이스 테이블의 열에 대해서는 VARCHAR2의 최대 길이를 요구 사항에서 허용되는 최소 길이로 설정하는 것이 좋습니다. 다른 제약 조건과 마찬가지로이 내장 된 기능을 사용하는 것이 좋습니다. 유효한 데이터 만 저장되도록하는 데이터베이스 (예 : 1000 자의 성이 입력되면 나는 잘못 될 가능성이 높고 어딘가에있는 프로그램에서 버그를 강조 표시합니다).

PL/SQL 측면에서 PL/SQL 프로그램에서 문자열을 선언하는 크기에 따라 메모리 (PGA) 사용량 차이가 있음을 알게됩니다. 내부적으로는 PL/SQL 엔진이 두 가지 다른 메모리 할당 방식 사이를 전환하는 임계 값이 2000 바이트입니다. 예 : 다음과 같은 선언은 :

DECLARE v VARCHAR2(2000); BEGIN... 

는 반면, 사용자의 메모리 영역에 2000 바이트를 할당합니다 :

DECLARE v VARCHAR2(2001); BEGIN... 

값이 할당되고, 필요한만큼의 메모리를 할당 할 때 전용 메모리를 할당합니다 그것에 할당 된 값을 보유합니다.

Oracle forum: "VARCHAR2 space allocation"

0

그냥 varray를 사용하지 마십시오. 중첩 테이블을 사용하십시오. 중첩 테이블은 중재 요소 수를 보유 할 수 있습니다.

테이블 정의에서 varchar2 (4000) 대신 varchar2 (4000)를 사용하면 오라클이 필요하지 않을 때이 공간을 요구하지 않으므로 실제로 문제가 발생하지 않습니다.

+0

내가 BINARY_FLOAT의의 VARRAY는 수십 데이터 포인트의 수천의 원시 파형을 저장하기 위해 사용을 고려하고 있습니다. 데이터를 더 빠르게 읽을 수있는 새로운 DAQ 장비를 구입하기로 결정했다면 수십만 개를 쉽게 넘을 수 있습니다. 저는 앞으로 계획을 세우려합니다. 난 지금 내가 필요로하는 것보다 훨씬 큰 최대 크기로 VARRAY로 효율성을 잃을 지 모르겠다. – Steven

+0

여기를 읽으십시오. http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14261/collections.htm#i35815 – tuinstoel

+0

위의 참조에서 유의하십시오. "다음의 주문 및 아래 첨자에 의존 할 수 없습니다. 순서 및 아래 첨자가 데이터베이스에 보존되지 않기 때문에 중첩 테이블이 안정적으로 유지되는 중첩 테이블이 데이터베이스에 저장되고 데이터베이스에서 검색됩니다. " 그게 너를 괴롭히지 않으면 그걸로 간다. VARRAY는 사용되지 않은 배열 항목도 저장하지 않으므로 하나의 요소가있는 VARRAY (100000)는 하나의 요소가있는 VARRAY (10)보다 더 많은 저장소 비용이 들지 않습니다. – DCookie