전체 글 25

[DB] 연산 조합에 따른 비용 분석

데이터베이스 연산 조합읽기/쓰기/잠금/트랜잭션은 조합에 따라 읽기 비용, 쓰기 비용, 락 오버헤드, 트랜잭션 오버헤드가 달라진다.읽기 비용(Read Cost)데이터를 읽기 위해 필요한 I/O 및 CPU 비용쓰기 비용(Write Cost)데이터를 수정 또는 삽입하기 위한 비용락 오버헤드(Lock Overhead)동시 접근을 제어하기 위해 잠금을 설정하는 비용트랜잭션 오버헤드(Transaction Overhead)트랜잭션의 시작, 커밋, 롤백에 소요되는 비용연산 조합에 따른 비용 분석연산 조합읽기 비용쓰기 비용락 오버헤드트랜잭션 오버헤드비고단순 읽기하--하데이터 읽기만 수행읽기 + 공유 잠금 (S Lock)중-하하읽기 중 데이터 변경 방지읽기 + 단독 잠금 (X Lock)상-상중읽기 중 데이터 변경 차단단순..

카테고리 없음 2025.02.28

[DB] Row Lock 아키텍처

Row Lock(행 장금) 아키텍처데이터베이스에서 동시 접근 시 행 단위 데이터 일관성을 보장하는 잠금 메커니즘동시성 제어(Concurrency Control)다중 트랜잭션 환경에서 데이터 무결성 유지하나의 트랜잭션이 특정 행을 수정하는 동안 다른 트랜잭션이 동일한 행에 접근하지 못하도록 잠금트랜잭션 완료 또는 롤백 시 잠금 해제잠금 종류Shared Lock(S Lock)읽기 전용 잠금다른 읽기 가능 / 쓰기 불가능Exclusive Lock(X Lock)쓰기 전용 잠금다른 읽기 / 쓰기 불가능Row Lock 동작 방식트랜잭션 A가 특정 행에 대해 X Lock을 설정트랜잭션 A가 행을 수정트랜잭션 B가 동일한 행 접근 시도 시 대기트랜잭션 A가 Commit 또는 Rollback 하면 잠금 해제트랜잭션 B가..

카테고리 없음 2025.02.28

[DB] Undo Log & Redo Log

Undo Log실패한 트랜잭션에 대해 데이터 변경 사항 롤백트랜잭션 원자성(Atomicity)을 지원한다.데이터베이스 일관성을 보장Undo Log 동작 방식트랜잭션 시작 시 이전 값(Old Value)을 로그에 기록트랜잭션 도중 장애 발생 시 Undo Log를 사용하여 이전 값으로 복구트랜잭션이 커밋되면 Undo Log는 삭제되거나 무시된다.Redo Log커밋된 트랜잭션의 변경 사항을 장애 복구 시 재실행한다.데이터베이스 지속성(Durability)을 보장한다.Redo Log 동작 방식트랜잭션 변경 사항이 로그에 기록된다.시스템 장애가 발생하면 Redo Log에 저장된 변경 사항을 다시 적용한다.트랜잭션이 커밋된 경우에만 Redo Log가 사용된다.트랜잭션 흐름에서의 역할트랜잭션 시작변경 사항을 Undo..

공부/DB 2025.02.28

[DB] Checkpoint 아키텍처

Checkpoint 아키텍처데이터베이스 시스템에서 장애 복구와 데이터 무결성을 보장하기 위해 사용되는 기술이다.데이터베이스가 특정 시점의 상태를 저장하고, 장애 발생 시 해당 시점부터 복구를 시작할 수 있도록 한다.디스크에 저장된 영구 데이터와 메모리에 캐싱된 임시 데이터를 동기화하는 과정Write-Ahead Logging(WAL) 메커니즘과 함께 사용된다.Checkpoint 동작 방식로그 작성(WAL)트랜잭션 변경 사항이 먼저 로그 파일에 기록Checkpoint 생성특정 시점에 메모리의 변경 사항을 디스크에 반영이 때, Checkpoint 레코드가 로그에 추가로그 제거Checkpoint 이전에 완료된 트랜잭션 로그는 삭제하거나 재사용장애 복구장애 발생 시 Checkpoint부터 로그 파일을 재처리하여 ..

공부/DB 2025.02.28

[HTML] <a> 태그

태그란?하이퍼링크를 생성하는 인라인 요소클릭하면 href 속성에 지정한 주소로 이동한다.혹은 다른 페이지, 파일, 이메일, 전화번호 등으로 이동할 수 있다.download 속성을 추가하면 파일 다운로드 설정도 가능하다.주소를 지정하여 이동이메일 전송새 창에서 보기기본적으로 target="_self" 라는 현재의 탭에서 보기라는 속성이 생략되어 있다. target="_blank"를 사용하면 새 창에서 해당 링크를 열 수 있다.보안상 rel="noopener noreferrer"를 추가하는 것이 권장된다.no opener(노오프너) - 링크를 건 페이지를 참조할 수 없게 되며, 링크된 페이지와 링크를 건 페이지가 별개의 프로세스 취급된다.no referrer(노리퍼러) - 다른 페이지로 이동 시, 링크를 건..

공부/HTML 2025.02.06

[HTML] <p> 태그

태그란?문단을 나타내는 블록 요소텍스트를 단락으로 나눌 때 사용되며, 위아래 여백이 포함된다.자동으로 줄 바꿈이 적용된다.@("이것은 태그입니다.")자동으로 줄 바꿈 적용class 적용CSS를 사용하여 스타일을 적용할 수 있다.스타일 적용 태그 안에서의 포함 요소텍스트와 , , 등과 같은 인라인 요소를 포함할 수 있다., , 등과 같은 블록 요소는 포함할 수 없다. 태그 내부에서 줄 바꿈이 필요하다면 태그를 사용할 수 있다.인라인 요소를 포함할 수 있습니다.만약, 태그 내부에 블록 요소를 넣는다면 구문 분석 단계에서 자동으로 태그를 닫는다.이 태그는이와 같은블록 요소는자동으로 닫힘 처리 됩니다. 태그 관련 글 바로가기 모음[HTML] 태그[HTML] 태그[HTML] 태그

공부/HTML 2025.02.04

[HTML] <div> 태그

태그란?콘텐츠를 그룹화하는 블록 요소다른 요소들을 감싸는 컨테이너 역할레이아웃을 만들거나 콘텐츠를 나눌 때 주로 사용 @("이것은 태그입니다.") 태그는 "division"의 줄임말이다.자체적으로는 어떤 의미도 없는 컨테이너의 역할이다.CSS 및 JavaScript로 스타일을 적용하거나 조작하는 데에 유용하다.class 또는 id 적용일반적으로 스타일 적용을 위해 class나 id와 함께 사용한다.이를 통해 레이아웃을 구성할 수 있다. 이것은 박스입니다.와 차이점블록 요소가로 전체를 차지레이아웃을 만들 때 사용인라인 요소필요한 만큼만 차지텍스트 스타일을 적용할 때 사용 이것은 div입니다. 이것은 span입니다.태그 관련 글 바로가기 모음[HTML] 태그[HTML] 태그[HTML] 태그

공부/HTML 2025.02.03

[C#] CustomEventHandler

타 대상에게 일어나는 특정 이벤트에 대한 처리를 일괄적으로 하고싶었음 여러 이벤트를 한 번에 관리하고 싶어서 EventHandlerList를 사용하였음 EventHandlerList의 key 오브젝트를 한 번에 관리 & 재사용을 하고 싶어 이전에 제작한 ObjectPool을 사용함 2023.12.07 - [개발/C#] - [C#] ObjectPool public class EventKey : IRecycle { public void Reset() { } } public class CustomEventArgs : EventArgs, IRecycle { public object?[]? Values { get; private set; } public void Set(params object?[]? values..

개발/C# 2023.12.12

[C#] Bools

bool값을 DB 등에 저장할 때 일일히 저장하기 어려운 점 때문에 비트 플래그를 사용하는 경우가 있음 그러나 비트 플래그는 잘 쓰이는 방식이 아니다보니 익숙하지 않아 사용하기 어려움 따라서 비트 플래그 계산을 사용할 수 있으면서 동시에 사용하기 편하고, DB 저장이 용이하면서 다수의 bool값을 묶어서 쓸 수 있는 자료구조를 제작 short(16비트), int(32비트), long(64비트) 형의 Bools 자료구조를 각각 제작 (bool의 개수는 각 비트의 개수와 동일) 실제 short/int/long형의 형변환이 자유로울 수 있도록 암시적 형변환 추가 public struct ShortBools { public static string IndexOutOfRangeExceptionMessage(byt..

개발/C# 2023.12.09

[C#] ObjectPool

잦은 new() 호출로 인한 메모리 누수를 방지하기 위해 object 재사용이 필요했음 thread-safe하며 object 재사용이 가능한 ObjectPool이 필요하여 자료 구조 클래스를 제작 최초 생성 시 미리 만들어둘 object의 개수를 지정할 수 있도록 함(default는 256개) 잘 못 반환되지 않도록 본인이 생성한 object를 등록 후 반환 시 검사 사용 가능한 상태의 object를 thread-safe한 Queue에서 가져가도록 함 만약 현재 사용 가능한 상태의 object가 없다면(생성된 object가 모두 사용 중) 새로 생성하여 pool에 등록 후 지급 사용 완료 후 반납하였을 때 일괄적으로 초기화를 해주기 위해 Reset()를 반드시 재정의해야하는 IRecycle 인터페이스를 ..

개발/C# 2023.12.07