
전체 글
SCN(System Change Number)
SCN(System Change Number) SCN(System Change Number)이란 데이터베이스의 특정 시점에 커밋된 버전을 나타내는 고유한 식별자이자 데이터베이스 구조이다. SCN은 트랜잭션 추적, 데이터 일관성 유지, 복제와 복구, 동시성을 제어하는 데 중요한 역할을 한다. SCN은 데이터베이스가 시작된 시점부터 시간이 경과하면서 생성된다. 또한 데이터베이스에 발생하는 트랜잭션, 데이터 변경, 로그 등 변경 작업이 발생할 때 증가한다. SCN의 종류 SCN의 종류 중 하나로는 Commit SCN이 있다. 만약 사용자가 Transaction을 Commit 하면 그 Transaction은 해당 Transaction을 구분할 수 있는 SCN을 부여받게 된다. 데이터베이스에 매 Commit이 수..
코딩테스트 오답정리
코딩테스트를 매일 공부하는 건 아니지만 감은 잃지 않았으면 하는 마음에서 오답노트를 만들어놓으려고 한다. 중요한 건 쿼리를 짜는 거지만 실수를 너무 많이 해서 줄였으면 하는 마음에서 정리를 해보았다. 경우의 수 모두 확인하기 - 답으로 나올 수 있는 모든 경우를 적어놓자. - 결과가 없을 경우 "None"이라도 반환하는 경우가 있을 수 있기 때문에 잊지 말고 적어놓자. - 0도 마찬가지이다. 범위 잘 확인하기 (배열 문제에서 중요) - 초기값을 잘 생각하자. - 인덱스를 잘 확인하자. 나는 1보다는 0으로 시작하는 게 더 편하니까 항상 0을 기준으로 생각하자. - for문 안 배열 순서 잘 확인하자. - 범위를 잘 생각하자. - 어떤 경우는 +1을 해주어야 통과한다. -
배치(Batch) 프로그램
배치 프로그램 배치(Batch) 프로그램은 사용자와 상호작용 없이 대량의 데이터를 처리하는 여러 작업들을 하나로 묶어 일괄로 수행되도록 하는 것을 말한다. 배치 프로그램은 정해진 시간 내에 수행이 완료되어야 한다. 배치 프로그램은 정기적으로 반복해서 수행되거나 또는 특정 조건에 해당될 때 자동으로 수행된다. 이때 수행 조건은 정기 배치(주로 야간), 조건에 맞는 이벤트성 배치, 사용자가 요구하는 On-Demand 배치 이렇게 3가지로 정리할 수 있다. 이를 통해 반복 작업을 효율적으로 처리할 수 있다. 배치 프로그램의 한 종류로는 절차형 프로그램이 있다. 절차형 프로그램은 애플리케이션 커서를 열고나서 루프 내부에서 다른 SQL 등을 호출하여 동일한 처리를 반복한다. 이 때문에 반복적인 DB Call 발생..
오라클 DB 기동 단계와 컨트롤 파일
오라클 DB 기동 단계 SHUTDOWN 종료된 단계이다. NOMOUNT 오라클 인스턴스만 시작된 단계이다. 오라클 인스턴스는 SGA와 Background Process의 결합이며, NOMOUNT 단계에서 이 두가지가 활성화된다. MOUNT SGA에 올리는 단계이다. 컨트롤 파일을 읽고 데이터페이스 파일 식별이 가능하다. 컨트롤 파일과 환경 정보가 일치하지 않으면 MOUNT 단계는 실패하게 된다. 오라클 데이터베이스 복구는 MOUNT 단계에서만 가능하다. OPEN 모든 데이터베이스 파일이 열린 단계이다. MOUNT 단계에서 수집했던 데이터베이스 상태 정보가 정상인지 확인한다. 예를 들어서, 컨트롤 파일에서 A테이블스페이스가 A.dbf 로 존재한다고 기록되어 있다면 운영체계 상에서도 실제로 해당 경로에 존재..
백업, HA, DR
2022년 SK C&C 판교 데이터센터의 화재로 인해 카카오 서비스 장애가 발생했었다. 화재는 UPS(무정전 전원 장치(Uninterruptible Power Supply))가 원인이었는데, UPS는 데이터센터 정전 시 사용하는 보조배터리 같은 존재로 보면 될 것 같다. 그러나 당시 화재 원인보다는 카카오의 데이터 복구가 왜 오래 걸리는지, 데이터 손실이 왜 발생했는지 등이 더 주된 이슈였다. 나도 그때 DR을 처음으로 찾아봤던 것 같다. 나는 당시 DR이란 단순하게 DR이란 Disaster Recovery 약자이고, 장애가 났을 때 빠르게 전환할 수 있는 재해복구 시스템이다 라고 외우고 넘어갔었다. 그렇지만 이제는 DR에 대해 더 구체적으로 알아야 할 것 같아서 자세히 조사해 보았다. 찾다 보니 DR..
DELETE, TRUNCATE, DROP
DELETE와 TRUNCATE의 차이점을 대충 알고 있었지만 정작 질문을 받으면 항상 구글에 검색한 뒤에야 겨우 답했었다. 그런 모습이 아쉬워서 DELETE, TRUNCATE에 대해 확실하게 알아보기로 했다. 구글에 검색하면 보통 함께 등장하는 DROP도 결이 다르다고 느껴지긴 하지만 이참에 같이정리해 보았다. DELETE 행 단위로 조건에 맞는 데이터를 삭제한다. 데이터를 삭제해도 HWM(High Water Mark)가 낮아지지 않기 때문에 테이블의 크기가 줄어들지는 않는다. DELETE FROM 테이블명 WHERE 컬럼명 = '조건'; COMMIT; DELETE는 언두 데이터를 생성하기 때문에 다음과 같이 특정 시점 또는 특정 시간 이전으로 복구할 수 있다. SELECT * FROM 테이블명 AS O..

유데미 기술블로그로 알아보는 테크니컬 라이팅 후기
글또에 다시 참여하게 되면서 어떻게 글을 작성해야 할지 고민이 생겼다. 기존에는 배운 내용을 정리해서 작성했었는데 이제는 그보다는 더 신경 써서 괜찮은 글을 작성하고 싶었다. 그래서 유데미의 기술블로그로 알아보는 테크니컬 라이팅 (강의 링크) 강의를 듣게 되었다. 테크니컬 라이팅이란 특정 독자를 대상으로 특정 목적으로 특정 정보를 전달하는 글쓰기 라고 한다. 강의에서는 글쓰기 과정을 크게 3단계로 분류하여 설명한다. 1. 작성 계획 독자, 주제 등을 선정하고 일정을 계획하는 단계이다. 강의에서는 주제를 고를 때에는 자료가 많고 사람들이 관심있어하는 내용으로 선정하는 것을 권장했는데 스터디에서 여러 번 발표해 본 입장에서 공감되었다. 조사하기 어려우면 발표준비부터가 고난이었고 나만 관심 있으면 발표할 때 ..
Lock
Lock Lock 발생 예시 ⇒ UPDATE 진행 시 해당 Row Lock 발생, 인덱스 생성 시 해당 테이블 Lock 발생 데이터를 보호하기 위해 Lock이 발생한다 Lock의 동시성 제어 비관적 동시성 제어 : 사용자들이 같은 데이터를 동시에 사용할 것이라고 가정 데이터 읽는 시점부터 Lock 걸고 조회/갱신 끝날 때까지 유지 SELECT NAME FROM USERS_INFO WHERE ID = 1 FOR UPDATE; -- Lock UPDATE USERS_INFO SET NAME = '김철수' WHERE ID = 1; 낙관적 동시성 제어 : 사용자들이 같은 데이터를 동시에 사용하지 않을 것이라고 가정 데이터 읽을 때는 Lock 설정 안 한다 수정할 때는 앞서 읽은 데이터가 변경되었는지 반드시 검사..
글또 8기 회고
이 글을 마지막으로 글또 8기가 끝난다. 그토록 참여하고 싶었던 활동을 어떻게 보냈는지 간단하게 회고로 정리해보려 한다. 방식은 테오 스프린트에서 처음 봤던 4L 회고 방식을 선택했다. Liked 꾸준히 글을 작성했다는 점이다. 환급 때문에라도 2주마다 강제로 작성할 수 있었다. 커피챗도 좋았다. 2번 모두 같은 분들을 만났는데 그간 어떻게 지냈는지 안부를 물어보면서 더 다양한 이야기를 할 수 있었다. 3번째는 시간 관계상 참여하지 못한 게 아쉽긴 하다. 반상회도 참여하길 잘했다. 시간 관계상 백엔드 반상회만 가서 아쉬웠지만, 그곳에서 회사를 다니면서 회사 안팎으로 열정적으로 사는 분들 이야기를 들을 수 있어서 좋았다. 또봇과 대나무숲도 좋았다. 슬랙을 활용해서 이런 걸 만들 수 있구나 생각하면서 매번 ..
SELECT, DML, COMMIT
SELECT가 발생하는 과정 구문 분석 SQL 문법에 맞는지, 테이블이나 뷰 등이 존재하는지 확인한다. 실행계획도 찾는다. 실행 데이터베이스 버퍼 캐시에 해당 데이터가 존재하는지 확인한다. 없다면 새롭게 데이터 파일을 읽어서 데이터베이스 버퍼 캐시에 저장해놓는다. INSERT, UPDATE, DELETE라면 데이터베이스 버퍼 캐시의 데이터가 바뀐다. 인출 데이터베이스 버퍼 캐시에서 해당 데이터를 읽어 클라이언트 단에 출력한다. INSERT, UPDATE, DELETE에서는 인출 단계가 없다. 출처 : https://dataonair.or.kr/db-tech-reference/d-story/db-tuning-service/?mod=document&uid=42394 DML이 발생하는 과정 데이터 파일로 테이..