오라클 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이 걸리기 때문에 다른 사용자들이 그만큼의 데이터를 사용할 수 없게 됨.
'데이터베이스' 카테고리의 다른 글
오라클 DB(sql)_기초 18 (제약조건) (0) | 2021.05.01 |
---|---|
오라클 DB(sql)_기초 17 (DDL) (0) | 2021.05.01 |
오라클 DB(sql)_기초 15 (Update & Delete) (0) | 2021.05.01 |
오라클 DB(sql)_기초 14 (Insert) (0) | 2021.05.01 |
오라클 DB(sql)_기초 12~13 서브쿼리 예제풀이 (0) | 2021.05.01 |