CMP(Container Managed Persistence)에 대한 부분 열 업데이트 기능
CMP(Container Managed Persistence) Bean 메소드 ejbStore는 지속성 속성 필드의 서브세트만 변경된 경우에도 CMP Bean의 모든 지속성 속성을 데이터베이스에 저장했습니다. 제품의 이 릴리스에서는 이러한 불필요한 성능 저하 요인이 제거되었습니다.
- NONE
- 부분 업데이트가 해제됩니다. CMP Bean의 모든 지속적 속성이 데이터베이스에 저장됩니다. 이것이 기본값입니다.
- UPDATE_ONLY
- 데이터베이스에 대한 업데이트가 변경되는 CMP Bean의 지속적 속성에 대해서만 발생하도록 지정합니다.
성능
- 열의 서브세트만 조회에 포함되므로 조회 실행 시간이 줄어듭니다. 많은 열과 색인이 포함된 테이블에 대해서는 더 많이 향상됩니다. 테이블에 색인이 많이 있는 경우 업데이트된 열의 영향을 받는 색인만 백엔드 데이터베이스가 업데이트해야 합니다.
- 전송될 데이터가 줄기 때문에 네트워크 입력 및 출력이 줄어듭니다.
- 일반적이지 않게 맵핑된 열에 대한 모든 처리 시간을 절약합니다. 예를 들어, 열에서 변환기, 작성기, 변환을 사용하여 부분적으로 입력 레코드를 주입하는 경우.
- 업데이트 트리거에 대해 불필요한 실행을 없애줍니다. CMP Bean 필드가 변경되지 않으면 해당 열에만 종속되는 트리거는 실행되지 않습니다.
- Bean에 대해 동일한 기간 동안 몇 개의 다른 열 조합을 수정하는 부분 업데이트를 사용하는 경우, 연결에 대해 준비된 명령문 최대 캐시에 빠르게 도달합니다. 그 결과 사용되지 않은 기간을 바탕으로 명령문 핸들이 캐시에서 제거됩니다. 이로 인해 명령문은 반복적으로 준비되고 ejbStore 메소드만이 아니라 모든 CMP 함수에 대한 성능이 저하됩니다.
- 함수 세트에 캐시된 부분 업데이트 조회 템플리트로 인해 메모리 사용량이 증가합니다. 이 증가량은 부분 업데이트 액세스 목적 옵션이 활성화되는 CMP Bean의 필드 수에 선형 비례합니다.
- PartialOperation 지속성 옵션은 일괄처리 업데이트 지속성 옵션과 같이 사용되는 경우 각 부분 조회가 다르기 때문에 일괄처리 업데이트 성능에 영향을 줍니다. 부분 업데이트 조회 문자열을 동적으로 생성하려면 실행 시간 비용이 발생합니다. 각 열에 대해 조회 단편이 저장되므로 조회 단편을 어셈블하기 위한 예외 비용은 더티 CMP Bean 필드 수에 따라 선형적입니다.
- 예를 들어, 더티 플래그를 검사 및 preparedStatement setXXX 메소드 호출 실행과 같이 각 CMP 필드에 대한 조건 검사가 있습니다.
부분 업데이트 고려사항
- 부분 업데이트는 열 수가 적고 단순 데이터 유형의 업데이트 트리거가 없는 작은 테이블만 사용하는 애플리케이션의 경우에는 그 혜택이 없을 수도 있습니다. 동적으로 부분 조회를 어셈블하는 비용이 성능 이득보다 더 큽니다.
- 자주 업데이트되지 않는 복잡한 데이터 유형이 있는 경우 부분 업데이트가 유용합니다. 복잡한 데이터 유형의 예로는 BLOB OR VARGRAPHIC 또는 일반적으로 데이터베이스 관리자 구현의 다른 위치에 저장되는 유사한 복잡한 백엔드 유형에 맵핑되는 "photo" CMP 속성이 포함된 직원 Bean이 있습니다.
- 부분 업데이트는 몇 개의 VARCHAR 유형 열이 있고 이들 중 극소수만 업데이트되는 경우에는 장점이 있습니다.
- 애플리케이션이 열의 다른 조합을 랜덤하게 업데이트하고 지정 가능한 열(키가 아님) 수가 5개를 넘는 경우에는 부분 조작을 사용하지 않는 것이 좋습니다. 이는 다른 부분 조회를 생성하고 준비된 명령문 캐시를 빠르게 채웁니다. 그렇지만 Bean이 너무 많은 열을 가지고 있지 않고(예: 4개 이하) 복잡한 데이터 유형인 경우, 조회 수 증가를 위해 명령문 캐시 크기 증가 옵션으로 부분 업데이트 설정을 고려할 수 있습니다. 명령문 캐시 크기 늘리기에 대한 정보는 데이터 소스 설정 도움말을 참조하십시오.
- 열 서브세트에 필요한 업데이트 트리거가 있는 경우 부분 업데이트가 유용합니다.
- 부분 업데이트는 테이블에 열과 색인이 많고 이 중에서 몇 개의 색인만 일반 업데이트의 대상인 경우에는 장점이 있습니다.
제한사항
부분 업데이트를 사용할 수 있는 모든 CMP Bean에 대해서는 기본적으로 업데이트 조회의 일괄처리 업데이트가 사용되지 않습니다. 즉, 부분 업데이트가 일괄처리 업데이트보다 우선적으로 사용됩니다. 삭제 및 삽입 조회의 일괄처리 업데이트는 영향을 받지 않습니다.
일괄처리 업데이트와 부분 업데이트 지속 옵션을 동일한 Bean에서 사용하는 경우 각 부분 조회가 다르므로 일괄처리 업데이트 성능이 영향을 받습니다. JVM 특성 -Dcom.ibm.ws.pm.grouppartialupdate=true를 사용하여 유사한 부분 업데이트 조회를 일괄처리 업데이트로 그룹화할 수 있습니다. 부분 업데이트 그룹화는 트랜잭션에서 동일한 유형으로 몇 개의 부분 조회가 있는 경우에만 도움이 됩니다. 그렇지 않으면 부분 업데이트 그룹화는 성능에 역효과를 줍니다. 이 설정은 Bean 레벨을 기반으로 하지 않으므로 이 설정을 사용할 때는 주의해야 합니다. 이는 부분 업데이트와 일괄처리 업데이트 모두가 있는 모든 Bean에 영향을 주기 때문에 두 업데이트가 모두 있는 모든 Bean에서 볼 때 부분 조회의 일괄처리 업데이트가 성능을 향상시키도록 해야 합니다.
JVM 특성을 설정하려면 다음을 수행하십시오.
- server.xml 파일을 여십시오.
- -Dcom.ibm.ws.pm.grouppartialupdate=true 값을 -Dcom.ibm.ws.pm.grouppartialupdate=false로 변경하십시오.