2014-03-24 3 views
0

여러 시스템과 상호 작용하는 복잡한 프로세스가 있습니다.Oracle Database에 저장할 수있는 합리적인 메시지 길이

이러한 각 시스템은 Oracle 데이터베이스의 테이블에 저장하려는 오류 메시지를 생성 할 수 있습니다 (상태는 있지만 작업의 특성상 오류가 항상 미리 정의되지는 않을 수 있음).

우리는 1 %가 다양한 오류를 초래할 수있는 매일 수십만 건의 거래를 말하고 있습니다.

1) 데이터베이스 필드의 합리적인 길이와 수용 할 수있는 길이를 알고 싶습니다. 얼마나 큰 메시지를 저장해야합니까?

2) 메모리가 현명한 경우, 데이터베이스의 필드가 얼마나 큰지가 중요합니까?

답변

1

"합리적인"및 "수용 가능한"은 응용 프로그램에 따라 다릅니다. 데이터베이스 열을 CLOB 대신 VARCHAR2으로 정의하고 12.1 이상을 사용하지 않는다고 가정하면 최대 4000 바이트를 보유하도록 열을 선언 할 수 있습니다. 지원해야 할 오류 메시지가 있으면 충분합니까? 설정할 수있는 오류 메시지의 길이에 하한선이 있습니까? 사용자에게 표시되도록 설계된 오류 메시지를 생성하는 경우 아마도 더 짧은 메시지를 생성 할 것입니다. 스택 추적을 생성하고 저장하는 경우 4000 바이트가 충분하지 않을 수 있으므로 열을 CLOB으로 선언해야 할 수 있습니다.

어떤 종류의 기억에 대해 이야기하고 있습니까? 디스크의 경우 VARCHAR2은 실제로 데이터를 저장하는 데 필요한 공간 만 할당합니다. 블록을 버퍼 캐시로 읽어 들이면 데이터를 저장하는 데 필요한 공간 만 사용됩니다. 필드의 크기에 따라 PL/SQL에서 로컬 변수를 할당하기 시작하면 오라클은 할당 증가 및 축소 비용을 피하기 위해 해당 로컬 변수에 대한 특정 데이터를 저장하는 데 필요한 공간보다 더 많은 공간을 할당 할 수 있습니다 문자열을 수정할 때. 데이터를 클라이언트 응용 프로그램 (중간 계층 응용 프로그램 서버 포함)에 반환하면 해당 클라이언트는 실제 데이터 크기가 아닌 열의 최대 크기를 기준으로 메모리에 버퍼를 할당 할 수 있습니다.

+0

'VARCHAR2'와'CLOB'을 사용하면 어떤 이점이 있습니까? 자세한 내용 : 이 필드를 쿼리하지 않습니다. 오라클 12 이상 사용. 4000 바이트는 몇 자로 변환 될까요? 나는 500 개가 넘는 것을 생각하고 있었다. 우리는 플래시 메모리에 대해 이야기하고있다. – otc

+1

@otc -'CLOB'은 잠재적으로'VARCHAR2'보다 처리가 덜 효율적이지만 한 행에 여러 PB의 정보를 저장할 수 있습니다. 12.1 이후 버전을 사용하는 경우, 데이터베이스가 32000 바이트의 정보를'VARCHAR2' 컬럼에 저장할 수 있습니다. 디스크에서 차지하는 공간에 대해 걱정할 것이기 때문에, 'VARCHAR2'는 문제의 데이터에 실제로 필요한 공간 만 사용합니다. –