CUBRID 11.4 버전을 릴리스 합니다.
CUBRID 11.4 는 새로운 기능, 주요 변경 사항, 개선 사항 및 이전 버전에서 발생한 다수의 오류 수정이 포함된 최신 안정화 버전.
1) 오라클 호환성을 위한 PL/CSQL 지원
2) 대용량 처리 지원을 위한 HASH JOIN 추가
3) 옵티마이저 및 인덱스 처리 방식 개선을 통한 성능 향상
4) 데이타 복구시 병렬 처리로 인한 성능 향상
5) 결과 캐시 확장을 통한 성능 개선
6) 데이타 덤프 성능 향상
7) 메모리 모니터링 기능 추가
8) 접근 제어 기능 향상
9) 백업/복구 운영 사용자 편의 향상
을 통하여 새로운 기능과 더불어 다양한 부분에서의 성능 개선이 이루어짐.
1. 변경 사항
* 기능 개선
- HASH JOIN 지원
- SERIAL 소유자 변경 SQL 구문 지원
- 생성된 그룹에 구성원을 추가/삭제할 수 있는 SQL 구문 지원
- 쿼리 캐시 확장 지원
- 조인 순서를 명시적으로 제어 가능한 LEADING 힌트 지원
- cubrid plandump의 특정 plan만 삭제하는 옵션 지원
- JNI 사용한 JavaSP를 위한 별도의 loadjava 옵션 지원
- 메모리 모니터링 유틸리티 지원
- diagdb -d 9 에 하나의 테이블만 덤프할 수 있는 옵션 지원
- 브로커별 통신 버퍼 크기 조절을 위한 파라미터 지원
- ACL 정책 정의를 위한 파라미터 지원
- Non-HA DB서버가 비정상 종료 시 자동 재 구동 기능 지원
- 백업본을 신규 DB로 복구하는 스크립트 지원
* 스펙 변경
- CHAR 타입의 최대 문자 개수를 2048로 제한( 변경 전 최대 : 268,435,456 )
- LOB 검색자(locator)의 경로를 상대 경로로 변경
- UPDATE JOIN 구문에서 분석 함수 사용 제한
- 시스템 테이블 및 뷰에 대해서 for update 구문 사용 제한
- 뷰 생성시 데이터 타입의 정합성을 체크하지 않도록 변경
- 뷰 질의 스펙의 select절에 NULL 값 사용 허용
- 테이블 생성 또는 컬럼 속성 변경시 AUTO_INCREMENT 와 DEFAULT 값이 공존할 수 없도록 변경
- ALTER INDEX … REBUILD에 신규 컬럼을 추가시 오류 발생하도록 변경
- ROWNUM 연산 값이 NUMERIC 타입 범위를 초과할 경우 오류 발생하도록 변경
- csql의 인터렉티브 모드에서 SQL문 또는 PL/CSQL 문장(create문, body문 등) 작성 중 세션 명령어가 인식되도록 변경
- cubrid plandump -d 수행시 삭제전 plan 정보 출력하지 않게 변경
- ha_mode 가 on 이고 ha_node_list 에 자신의 호스트명 이 있는 경우 오류 발생하도록 변경
- 시스템 테이블 중 db_serial의 컬럼명 변경 (att_name → attr_name)
* 개선 사항(성능 개선 포함)
- 상관 하위 질의 결과에 캐시 도입으로 성능 개선
- LIMIT 절에 바인드 변수와 계산식이 포함된 경우, Sort-Limit 최적화가 적용되도록 개선
- JNI 프로그램이 세그멘트 폴트 오류 발생시 자동으로 javasp 서버를 재 구동하게 개선
- 여러 종류의 문자 인코딩(euckr, utf8)을 지원하도록 문자열 기능 개선
- 필터 인덱스를 생성할 때 where 절의 길이 제한 제거
- 다중 컬럼 인덱스에서 레코드를 읽을 때 필요한 midxkey.buf 크기 계산 방식을 개선하여 인덱스 스캔 성능 향상
- 불필요한 연산 및 비교 회수를 최적화를 통해 인덱스 스캔 성능 향상
- 옵티마이저의 전반적인 개선을 통한 성능 향상
- 저장 프로시저 실행 계획 개선
- 불필요한 행에 X-LOCK 설정되지 않도록 개선하여 동시성 향상
- like 질의 조건 값으로 JavaSP 함수를 사용하는 경우에 인덱스 스캔을 사용하도록 개선
- 함수 인덱스와 함께 <= 와 >= 범위 조건 질의 사용시 범위 인덱스 스캔을 사용하도록 개선
- 테이블과 뷰가 없는 DB에서 unloaddb를 실행시 그 외의 schema(user, serial, sp, server, synonym, grant)가 추출될 수 있도록 개선
- unloaddb 성능 개선
- csql의 환경 변수명 명확성 개선
- cubrid spacedb 결과값 개선
- cubrid broker info 결과값 개선
- 잘못된 ACL 설정에 대해 오류 발생하여 사용자 인지 개선
- CMS(CUBRID Manager Server)에서 TLS v1.2 클라이언트가 접속할 수 있도록 개선
- CMS 통해 생성된 broker/cas 프로세스 종료시 좀비 프로세스 남지 않게 개선
- CMS getlogfileinfo() API를 호출하면 동일한 SQL LOGFILE의 정보를 1회만 반환되도록 개선
- CMS ha_status() API가 Master,Slave,Replica 구성된 HA환경에서 Replica Node의 상태가 출력되도록 개선
- ha_node_list 및 ha_replica_list의 잘 못된 설정에 대해 명확한 오류 메세지 출력으로 사용자 인지 개선
- Failover와 Failback 발생에 대해 명확한 오류 메시지 출력으로 사용자 인지 개선
- Salve 노드에서 restoreslave 실행시 잘 못된 데이터 불일치 오류 메세지가 발생하지 않도록 개선
- 사용자 편의를 위해 user hosts (cubrid_host.conf) 개선
- DDL Audit 로그 개선
- REDO 복구 과정에 병렬 스레드 적용하여 성능 개선
- 교착 상태(deadlock) 발생 시 데이터베이스명_latest.event 로그파일에 기록되는 잠금관련 정보를 간소화
- time_format() 및 date_format()의 성능 개선
- TRACE 활성화 시 쿼리 성능 개선
- 문자열 유형에 대한 불필요한 길이 검사 제거를 통해 성능 개선
- lock_escalation 설정 값 만큼만 락 리소스를 유지하도록 변경해서 메모리 사용량 개선
- optimization_level 설정값에 잘못된 값을 입력 시 오류 출력을 통해 사용자 인지 개선
- DB볼륨 및 로그의 생성 시간을 확인 개선
- SHOW INDEX CAPACITY 및 diagdb에 fence key 정보 추가를 통해 사용자 인지 개선
* 오류 수정
- 다른 계정의 동일명 원격 서버 객체가 존재하는 경우, 사용자명(user schema)없이 원격 서버 객체 참조시 자신의 원격 서버 객체를 참조하지 못하는 오류 수정
- ORDER BY 절이 있는 스칼라 하위 질의에서 hidden 컬럼 처리 오류 수정
- ORDER BY를 포함하는 인라인 뷰와 스칼라 하위 질의의 뷰 머징 처리시 ROWNUM이 ORDER_BY_NUM()으로 잘못 재 작성되는 오류 수정
- oracle_style_empty_string=yes 설정시 ‘NULL || 문자열’ 연산 결과가 NULL로 출력되는 오류 수정
- oracle_style_empty_string=yes 설정시 REPLACE 함수 결과가 NULL로 출력되는 오류 수정
- 함수 인덱스를 기반으로 Covered Index 스캔 수행시 잘 못된 결과를 반환하는 오류 수정
- 항상 false (또는 NULL) 조건을 가진 CTE 질의 수행시 발생한 세그먼트 폴트 오류 수정
- UNION ALL 구문에서 여러 테이블과 serial의 next_value를 함께 사용한 질의 수행시 발생한 세그먼트 폴트 오류 수정
- SELECT list 절에 alias 없이 255자 초과한 상수값을 사용한 질의 수행시 발생한 세그먼트 폴트 오류 수정
- OUTER JOIN을 포함한 질의에서 뷰머징 처리 시 발생한 오류 수정
- SHOW CREATE VIEW 질의 수행시 현재 사용자의 뷰와 public 사용자의 동일명 뷰가 함께 출력되는 오류 수정
- repeat() 함수에 string_max_size_bytes 설정값을 초과한 요청한 경우 오류 메시지가 출력되지 않고 NULL이 반환되는 오류 수정
- 쿼리 최적화 중 INNER JOIN 제거 과정에서 테이블 위치가 잘못 처리되는 오류 수정
- PREPARE 구문에서 특정 내장 함수에 호스트 변수 사용시 발생한 오류 수정
- DROP USER 수행시 관련 시스템 카탈로그 테이블의 사용자 정보가 삭제되지 않은 오류 수정
- SP 호출 및 WHERE 절에 호스트 변수를 사용한 Oracle 스타일 LEFT OUTER JOIN이 INNER JOIN으로 재 작성되지 않는 오류 수정
- ORDERBY_NUM()이 포함된 하위 질의가 뷰 머징에 잘 못된 결과를 출력하는 오류 수정
- 질의 최적화 중 조인 관계가 없는 테이블이 조인 테이블로 인식되는 오류 수정
- WHERE 절의 동등 조건(=)과 ORDER BY 절에서 사용된 컬럼이 동일할 때 ROWNUM 값이 0으로 출력되는 오류 수정
- INNER JOIN과 Oracle 스타일 OUTER JOIN을 함께 사용하고, WHERE 절에 OUTER JOIN 조인 조건의 위치에 따라 발생한 오류 수정
- INSERT INTO tbl … SELECT … FROM 뷰테이블 … ON DUPLICATE KEY UPDATE 질의 수행시 잘못된 결과를 출력하는 오류 수정
- 뷰에 분석 함수가 포함될 때, 분석 함수 내부의 컬럼 순서 번호가 잘못되어 잘못된 결과를 출력하는 오류 수정
- 범위 조건을 파이프 연산자(||)와 함께 사용시 범위 항목으로 인지하지 못하는 오류 수정
- JavaSP의 DATETIME 매개변수에 DATETIMELTZ 값을 시용시 발생한 오류 수정
- JavaSP의 선언된 Java 메서드명과 여는 괄호 사이의 공백으로 인해 JavaSP 수행되지 않는 오류 수정
- JavaSP의 미지원 타입을 보유한 테이블의 다른 컬럼을 인자로 사용시 발생한 오류 수정
- JavaSP에서 Cannot allocate query entry any more 발생한 오류 수정
- DBLINK 구문의 호스트 변수에 NULL 처리시 발생하는 오류 수정
- EUC-KR 오라클 DB에 DBLINK Insert 구문에 호스트 변수를 통해 한글 입력시 한글 깨지는 오류 수정
- loaddb 실행 중 오류 발생 시 종료 코드가 3으로 설정되지 않는 오류 수정
- loaddb --no-logging 실행 후 잘 못된 count(*) 값을 출력하는 오류 수정
- loaddb 실행 중 스키마명이 없는 serial 처리시 발생한 오류 수정
- loaddb 실행 중 오류 발생 시 멈추지 않고 계속 실행되는 오류 수정
- loaddb 실행 중 대상이 시스템 테이블인 synonym 처리시 발생하는 오류 수정
- 11.4 이전 버전의 unloaddb 파일을 loaddb 실행 시, 트리거 시스템 테이블 컬럼 (condition, action_definition)에 스키마명이 잘못 저장되거나 누락되는 오류 수정
- unloaddb 실행 시 Reverse Unique Index의 주석이 누락되는 오류 수정
- unloaddb 실행 시 auto_increment 설정과 함께 PK로 선언된 컬럼의 auto_increment 값이 1로 초기화되는 오류 수정
- unloaddb --split-schema-files 실행 시 Unique Index가 없는 경우 ‘db명_schema_uk’ 파일이 생성되는 오류 수정
- unloaddb -i (--input-class-only) 옵션을 함께 실행시 특정 ALTER SERIAL 문이 누락되는 오류 수정
- unloaddb 실행시 serial의 current_val과 max_val 동일한 경우 발생한 오류 수정
- unloaddb 실행시 1MB 초과한 JSON 타입 데이터 처리에 대해 무한 루프 발생하는 오류 수정
- 일반 사용자로 unloaddb 실행시 뷰의 query_spec 출력시 일반 사용자와 동일한 스키마명이 제거되지 않는 오류 수정
- DBA 사용자로 unloaddb 실행시 serial과 trigger의 스키마명이 누락되는 오류 수정
- DBA 사용자가 --as-dba 옵션 없이 unloaddb 실행시 다른 사용자가 부여한 PROCEDURE 권한(GRANT … ON PROCEDURE)이 출력되는 오류 수정
- 일반 사용자가 unloaddb 실행시, 트리거의 condition과 action_definition에 일반 사용지외 동일한 스키마명이 제거되지 않는 오류 수정
- backupdb 실행시 불필요한 보관 로그 볼륨이 생성되는 오류 수정
- FlashBack를 강제 종료 (Ctrl+C)시 작업 종료되지 않은 오류 수정
- 특정 상황에서 backupdb 수행시 hang 발생하는 오류 수정
- addBatch()와 executeBatch() 처리 시 발생할 수 있는 메모리 누수(memory leak) 수정
- gettranscationinfo() 함수 호출시 잘 못된 결과를 출력하는 오류 수정
- Master, Slave 및 Replica 노드로 구성된 HA 환경에서 ha_replica_delay 설정값이 60초 이상으로 설정된 경우, Replica 노드에서 slave 대상 복제 로그가 삭제되지 않는 오류 수정
- applylogdb 수행중 생성된 sql log 파일이 특정 조건에서 자동 삭제되지 않는 오류 수정
자세한 사항은 11.4 change logs(https://github.com/CUBRID/cubrid/releases/tag/v11.4)와 온라인 매뉴얼(https://www.cubrid.org/manual/ko/11.4/release_note/index.html)를 참고해 주시기 바랍니다.
2. 주의 사항
- 이기종(Oracle/MySQL)간 DBLink 사용 시 반드시 Oracle/MySQL의 유니코드 전용 ODBC Drvier를 사용해야 한다.
3. 요구 사항
- Linux 64bit kernel 2.4 이상 또는 Windows 7 이상 버전이 필요함(단 windows 7의 경우 최신 보안 업데이트가 필요함)
- JSP 또는 CUBRID Admin/CUBRID Manager 사용시 JRE 1.8 이상 버전이 필요함
4. 다운로드
- 제품 다운로드 : https://www.cubrid.com/downloads
- 제품 소스코드 : https://github.com/CUBRID/cubrid/tree/v11.4
5. 관련 정보
- 한글 사이트 : https://www.cubrid.com
- 영문 사이트 : https://www.cubrid.org