무조건 정지하는 break 줄번호. - breakpoint 를 만나면 "무조건" break 한다. - breakpoint 만 등록되며, c 를 실행해야 코드가 실행된다. - 등록할 때 몇 번째 Breakpoint 인지 "Breakpoint Condition Number" 를 알려준다. 이 번호는 아래 Condition 명령에서 사용된다. Ex> Breakpoint 1 at test.py # 여기서 1 이 Breakpoint Condition Number 이다.
breakpoint 에 조건 걸기
condition"Breakpoint Condition Number" 조건코드 - 무조건 정지하는 breakpoint 를 특정 조건에서만 정지되도록 변경 - Ex> condition 1 result=="lucky" # 1번 Breakpoint Condition Number 인 무조건 정지하는 breakpoint 를 result == lucky 일때만 정지하는 break 로 변경 - 주로 딥러닝 학습 loss 터질때 사용
4) 주된 사용법
- breakpoint() 가 많으면 소스가 지저분해지고 배포시 일일이 삭제해야 한다.
- 그러니 코드 첫 줄에만 breakpoint() 를 넣고, breakpoint 명령으로 break 위치를 설정하고 c 로 넘어가는 게 편하다.
동일한 Query 에 대해 Cache 하나 데이타 변경시 부하가 커서(캐시 데이타 삭제때마다 Lock 발생때문) MySQL 8 부터는 기능 폐지.
PK
- PK 는 클러스터링 된다. 그러므로 회원별 조회가 많다면 반드시 PK 가 되는 것이 좋다. 다만 쓰기 기능은 느려진다. (클러스터링 처리를 위한 데이타 재 배열 발생때문) - PK 가 없으면 암묵적 PK 생성되며 직접 접근 불가능
StorageEngine.MVCC.InnoDBBufferPool
- Insert 후 Commit 하면 데이타를 BufferPool 에 보관. - Update 하면 Commit 전이라도 데이타를 BufferPool 에 보관
StorageEngine.MVCC.UndoLog
- Commit 전 데이타를 임시 보관
StorageEngine.MVCC.RedoLog
- Commit 후 데이타를 저장.
Isolation Level
1) READ_UNCOMMITTED 일 경우 : BufferPool 값이 SELECT. 커밋 안된 데이타를 볼 수 있음 = Dirty Read 2) READ_COMMITED, REPEATABLE_READ, SERIALAZABLE : UndoLog 값이 SELECT. 커밋된 데이타만 볼 수 있음. 3) RPREATABLE READ : 내가 특정 트랜잭션에서 읽는 동안에는 동일한 결과만 나옴. 다른 트랜잭션에서 새로운 데이타를 추가할 수는 있음. Ex> 책가격을 보는 중인데, 판매자가 가격을 바꿔도, 적어도 내가 보던 트랜잭션에서는 책가격이 유지됨. 4) SERIALIZABLE : 완벽하지만 오류없음.
Adaptive Hash Index
- Index Key 와 Page Address 쌍. Page Address 가 있으므로 Page 에 빨리 액세스 가능 - DB 가 자동으로 접근빈도 높은 데이타에 인덱스 생성함.
LockingLevel
- Index Lock. 김씨를 조회씨 성씨 Index 를 탈 경우, 김씨 Index가 모두 Lock 이 걸림. - Full Scan 시, 암묵적 PK Index 전체가 Lock 걸림. - 즉 복합 인덱스 매우 중요해짐