이 기능을 비활성화하려면 시스템 속성 h2.serializeJavaObject= false (기본값: true)를 설정합니다. 이 모드에서는 데이터베이스가 트랜잭션을 동시에 실행하지 않고 차례로 실행하는 것처럼 취급하기 때문에 보고 있는 데이터를 특정할 수 있습니다. 이전 예제에서 선택 문은 테이블 잠금 모드에서 전체 테이블에 대한 잠금으로 인해 트랜잭션이 커밋될 때까지 업데이트, 삭제 및 삽입을 방지합니다. 물론 여러 세션에서 동시에 사용되는 시스템이 있는 경우 행 잠금은 더 나은 성능을 제공하며 기본적으로 Derby가 사용하는 모드입니다. 그러나 테이블 잠금을 사용하는 것이 더 효율적이도록 많은 잠금을 축적하기 시작하면 Derby가 자동으로 변경합니다. derby.storage.rowLocking 속성을 사용하면 이 동작의 임계값을 제어할 수 있습니다. (자세한 내용은 관련 항목 섹션의 튜닝 더비를 참조하십시오.) 예를 들어 앞에서 보았듯이 이 응용 프로그램의 초기 개발에서는 거의 비어 있는 테이블이 너무 작아서 Derby가 항상 테이블 잠금을 선택했습니다. 행 잠금을 관찰할 수 있는 레코드가 많이 추가되기 전까지는 그렇지 않았습니다. 일반 텍스트 암호 대신 암호 해시를 사용하여 연결하려면 PASSWORD_HASH=TRUE를 데이터베이스 URL로 바꾸고 암호를 암호 해시로 바꿉습니다. 일반 텍스트 암호에서 암호 해시를 계산하려면 H2 Console 도구에서 다음 명령을 실행합니다: @password_hash . 예를 들어 사용자 이름이 sa이고 암호가 테스트되는 경우 SA 테스트 @password_hash 명령을 실행합니다. 그런 다음 일반 텍스트 암호를 사용하는 것처럼 결과 암호 해시를 사용합니다. 암호화된 데이터베이스를 사용하는 경우 사용자 암호와 파일 암호를 별도로 해시해야 합니다.
파일 암호의 해시를 계산하려면 파일 @password_hash 실행합니다. 예를 들어 PageStore 저장소 엔진에서 nio 파일 시스템을 사용하려면 다음 데이터베이스 URL을 사용합니다. MV_STORE=FALSE. MVStore 스토리지 엔진 nio 파일 시스템은 기본적으로 사용된다. 특별한 경우(예: 정전이 발생했기 때문에 프로세스가 정상적으로 종료되지 않은 경우) 잠금 파일을 만든 프로세스에서 잠금 파일이 삭제되지 않습니다. 즉, 잠금 파일의 존재는 파일 잠금을위한 안전한 프로토콜이 아닙니다. 그러나이 소프트웨어는 데이터베이스 파일을 보호하기 위해 챌린지 응답 프로토콜을 사용합니다. 두 가지 방법 (알고리즘) 모두 보안을 제공 하기 위해 구현 (즉, 동일한 데이터베이스 파일을 동시에 두 프로세스에 의해 열 수 없습니다) 단순화 (즉, 잠금 파일 은 사용자가 수동으로 삭제 할 필요가 없습니다).
Published by: gianni57
Comments are closed.