오라클 DB(sql)_기초 16 (DML 관련 주의사항)

데이터베이스 2021. 5. 1. 19:56

<엄청엄청중요한 내용>

  • FK 변경은 참조하고 있는 PK값의 범위안에서만 발생하여야 하며, 입력되지 않음.
  • 자식테이블에서의 DML연산은 참조하고 있는 부모테이블의 범위 안에서 손쉽게 이루어질 있음.
  • 부모테이블에 입력되어 자식테이블에 참조하고 있는값은 부모테이블에서 변경이 불가능함.
  • 부모테이블의 특징 >> 참조가 값은 수정,삭제가 불가능함.
    참조테이블의
    데이터가 없으면 부모테이블내부에서 자연스럽게 DML연산 수행이 가능함.

<읽기 일관성>

  •  두가지 응용프로그램을 동시에 띄워두었을 한쪽에서 값을 변경하고 다른쪽에서 출력하면 변경되기 이전의 값이 일관성있게 나오게 .
  •  트랜잭션이 수행되었을 , 트랜잭션에서 변형된 내용은 다른 트랜잭션에서 없음.
  • 데이터 베이스 대기상태 :
  • 병행제어: 동시에 시행되는 트랜잭션들을 제어하는 >> lock이라는 매커니즘진행
    트랜잭션이
    시행되는 행에 lock 걸어 먼저 트랜잭션을 수행하는 주체만 사용가능하도록 .
    변경하기
    원하는 행에서 한쪽의 트랜잭션이 종료되면 다른쪽의 트랜잭션이 진행됨
  • Insert update 진행 commit 생략하는 경우 lock 걸려 다른쪽에서 트랜잭션을 진행할 대기 상태로 지속하게 . 그러므로 철저한 commit단계가 필요함.

** LOCK
:
트랜션이 실행됨에 따라 할당되어 진행되는 (트랜잭션이 진행되면 rock 할당됨.)
:
트랜잭션이 커지면 할당되는 lock수는 작아지며, 동시성 또한 작아지게 . 한번 rollback 데이터 손실량도 증가하게 .

: 반대로 트랜잭션이 작아지면 lock수가 많아지고, 동시성 증가, 데이터손실량도 감소함.

: 동시성이 감소한다는 , >> 많은 수의 컬럼을 한명이 사용할경우 그것들이 모두 lock 걸리기 때문에 다른 사용자들이 그만큼의 데이터를 사용할 없게 .

admin