본문 바로가기
레거시

2022.04.26의 기록

by GroovyArea 2022. 4. 26.

▶ 파트 1 (10시 ~ 11시 10분)

1. 테스트 코드 최종 수정

2. 추후 계획 정리

3. 보건증 발급 및 알바 준비

▶ 파트 2 (3시 ~ 12시)

1. 스프링 부트 프로젝트 생성 후 깃 연동 (이건 이제 안 까먹겠다..)

2. 자기소개서 수정

3. mysql 질문 정리 및 CH 8, 9(9.2.3 전까지) 정리

4. 알고리즘 고득점 키트 - 해시

5. mysql workbench 설치

 

▶ 최근 이슈

1. 시간 부족

=> 학원 수료해서 시간이 많이 날줄 알았는데 생각보다 적은 것 같다..

> 원인 : 운동 갔다 오는 시간, 알바 시간

> 해결 : 1시간만 더 일찍 일어나 보자, 운동은 짧고 굵게.

 

2. 테스트 코드 

=> 자바 프로젝트 후 테스트 코드를 작성하며 TDD 방식을 조금이나마 깨닫게 되었다.

=> 이미 짜인 코드를 보며 테스트를 하는 것이 아닌 테스트를 만들어 두고 코드를 작성하는 것

> 이번 프로젝트 때 적용할 것

 

3. 깃 허브 정리

=> 깃허브로 리드미와 위키 정리 미흡

> 이번 주 중 알바 쉬는 날 잡고 하루에 해보자

 

4. 블로그 정리

=> 프로젝트용 중간 회고 필요

> 이번 프로젝트가 메인이기 때문에 중간중간 회고를 작성하는 것으로 결정

 

5. DB 공부

=> 어렵다.

> 익숙해질 때까지 반복적으로 보고 질문 답습 필수

 

6. 알고리즘

=> 고득점 키트로 ㄱㄱ

> 문제의 유형이 비슷하기 때문에 흐름을 읽자

> 코테 보는 곳 지원해서 경험 쌓아보기

 

▷ DB 정리

1. 관계형 데이터베이스란?

  • 행과 열로 이루어진 각각의 테이블을 고유값(Primary Key)을 참조하여 서로 종속되는 관계(=연결하는 것)를 표현하는 데이터 베이스 구조

RDBMS의 장점

  1. 데이터의 분류, 정렬, 탐색 속도가 빠릅니다.
  2. 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장해 줍니다.
  3. 기존에 작성된 스키마를 수정하기가 어렵습니다.
  4. 데이터베이스의 부하를 분석하는 것이 어렵습니다.

2. MySQL에서 사용하는 엔진

 

[MySQL]InnoDB VS MyISAM

MySQL의 스토리지 엔진으로 가장 많이 사용하는 엔진으로는 InnoDB와 MyISAM이 있다. InnoDB 엔진은 트랜잭션 처리가 필요하고 대용량의 데이터를 다루는 부분에서 효율적이고, MyISAM 엔진은 트랜잭션

velog.io

InnoDB

  • 트랜잭션 처리 필요, 대용량 데이터를 다루는 부분에서 효율적
  • 데이터의 변화가 많은 서비스

MVCC

  • 하나의 트랜잭션에서 데이터에 접근하는 경우 데이터의 다중 버전 상태 중 보장되는 버전에 맞는 값을 반환하여 처리하는 방법을 의미
  • 언두 영역에 의해 가능
  • https://mozi.tistory.com/561
 

[DATABASE] MVCC 구조와 이해

MVCC 란 ( Multi Version Concurrency Control ) 하나의 트랜잭션에서 데이터에 접근하는 경우 데이터의 다중버전 상태 중 보장되는 버전에 맞는 값을 반환하여 처리하는 방법을 의미합니다. 데이터의 다중

mozi.tistory.com

언두 영역이란

  • UPDATE 문장이나 DELETE 문장으로 데이터를 변경했을 때 변경되기 전의 데이터(이전 데이터)를 보관하는 곳
  • 트랜잭션의 롤백 대비용
  • 트랜잭션의 격리 수준을 유지하면서 높은 동시성을 제공

MyISAM

  • 트랜잭션 처리 필요 없음, Read only 기능이 많은 서비스일 수록 효율적
  • select가 많은 서비스

3. 트랜잭션이란?

  • 데이터베이스의 상태를 변경시키기 위해 수행하는 작업 단위

트랜잭션의 4가지 특징

1. 원자성

  • 트랜잭션이 DB에 모두 반영되거나, 전혀 반영되지 않거나
  • All or Nothing

2. 일관성

  • 트랜잭션 작업 처리의 결과가 항상 일관되어야 함
  • 데이터 타입의 반환 후와 전이 항상 동일

3. 독립성

  • 하나의 트랜잭션은 다른 트랜잭션에 끼어들 수 없고 마찬가지로 독립적임을 의미
  • 각각의 트랜잭션은 독립적이라 서로 간섭이 불가능

4. 지속성

  • 트랜잭션이 성공적으로 완료되면 영구적으로 결과에 반영되어야 함
  • 보통 commit이 된다면 지속성은 만족할 수 있다.

격리수준

 

트랜잭션 격리 수준(Isolation Level)이란?

회사에서 프로젝트를 할 경우 가끔 동시성 처리가 필요한 경우가 있습니다. 이 경우에 트랜잭션 범위에서 Lock을 사용하여 쓰레드를 직렬화함으로써 동시성을 처리 했던 기억이 있는데, 좀 더 상

velog.io

1. READ uncommitted

  • 어떤 트랜잭션 변경 내용이 COMMIT이나 ROLLBACK과 상관없이 다른 트랜잭션에서 보임
  • 데이터 정합성에 문제가 많으므로, RDBMS 표준에서는 격리 수준 인정 안 함
  • Dirty Read 이슈 : 커밋되지 않은 전 데이터를 조회하는 경우

2. READ committed

  • 어떤 트랜잭션의 변경 내용이 COMMIT 되어야만 다른 트랜잭션에서 조회 가능
  • 오라클에서 기본적으로 사용하고, 온라인 서비스에서 가장 많이 사용하는 격리 수준
  • NON-REAPEATABLE READ 부정합 문제 발생 : 자신의 트랜잭션 번호보다 낮은 트랜잭션에서 변경된(커밋된) 것만 보게 되는 것

3. REPEATABLE READ

  • 트랜잭션이 시작되기 전에 커밋된 내용에 대해서만 조회할 수 있음
  • MySQL에서 기본적으로 사용하고, NON-REAPEATABLE READ 부정합 발생하지 않음
  • 언두 영역 이용
  • Phantom Read 이슈 : 한 트랜잭션 내에서 같은 쿼리 두 번 실행 시 첫 번째 없던 유령 레코드가 나타나는 경우 - Insert 시 발생

4. SERIALIZABLE

  • 가장 단순하고 가장 엄격한 격리 수준
  • InnoDB에서 기본적으로 순순한 SELECT 작업은 아무런 잠금을 걸지 않고 동작하는데, 읽기 작업에도 공유 잠금을 설정하게 된다. 이러면 동시에 다른 트랜잭션에서 이 레코드를 변경하지 못하게 됨
  • 동시처리 능력이 다른 격리 수준보다 떨어지며, 성능 저하가 발생하게 된다

4. 인덱스란?

  • 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료구조
  • 해당 칼럼 데이터 정렬 및 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장됨 - 검색 속도의 향상
  • 책에 있는 목차 같은 것

클러스터 인덱스와 넌 클러스터 인덱스

 

[데이터베이스] 클러스터 인덱스와 넌클러스터 인덱스/ 개념 총정리

오늘은 인덱스의 종류인 클러스터 인덱스, 넌 클러스터 인덱스에 대해 정리해보겠습니다. 일단 인덱스란 데이터를 빠르게 검색할 수 있게 해주는 객체입니다. 컬럼을 정렬한 후에 데이터를 빠

junghn.tistory.com

두 인덱스의 특징적 차이

  1. 데이터를 어떤 식으로 조회하는가?
  • 클러스터 : 페이지를 알기 때문에 바로 그 페이지를 펴는 것
  • 넌 클러스터 : 뒤에 목차에서 찾고자 하는 내용의 페이지를 찾고 그 페이지로 이동
  • 클러스터 인덱스는 데이터 위치를 바로 알기 때문에 그 데이터로 바로 접근할 수 있고, 넌 클러스터 인덱스는 인덱스 페이지를 한번 거쳐서 데이터에 접근하는 방식이다.
  1. 읽기, 쓰기, 삭제 등에서 어떤 게 더 유리한가?
  • 넌 클러스 인덱스(인덱스 자체의 리프 페이지는 데이터가 아니라 데이터가 위치하는 포인터(RID)이므로 검색은 느리지만 입수삭은 빠르다.

인덱스에서 사용되는 자료구조

 

[DB] 인덱스란? - (2) 구조, B-Tree 계열을 쓰는 이유

거의 모든 DBMS는 인덱스 종류에 대해 특별한 언급이 없다면 B-Tree 계열 인덱스를 사용하는 경우가 대다수이다. 많고 많은 자료구조에서 왜 하필 B-Tree, B+-Tree를 사용하는지에 대해 알아본다. 이 글

siahn95.tistory.com

 

왜 인덱스는 Tree 구조를 사용할까? Hash를 사용하는 게 더 좋지 않을까?

  • Hash는 (O(1)) Big-O 표기법상 가장 빠른 탐색의 특징을 가진 자료구조이다.
  • 하지만 이것은 명백히 단일 행 조회 시만 해당 - 범위 검색은 해당되지 않음

B-Tree

  • 하나의 노드에 여러 데이터가 저장 가능한 트리

B-Tree를 사용하는 이유

  1. 트리 내 모든 데이터가 항상 정렬된 상태로 유지되기 때문에,

등호(=) 연산뿐만 아니라 부등호(>, <) 연산 처리도 가능하다.

  1. 포인터 접근 방식이 적어 매우 많은 데이터가 있어도 속도 이슈가 적다.
  2. 데이터 탐색뿐 아니라, 삽입 및 수정 및 삭제에도 항상 O(log N)의 시간 복잡도를 가진다.
반응형

'레거시' 카테고리의 다른 글

2022.05.02 「자기소개서, 프로젝트 수정」  (0) 2022.05.02
2022.04.27의 기록  (0) 2022.04.26
2022.04.25의 기록  (0) 2022.04.25
2022.04.24의 기록  (0) 2022.04.24
2022.04.23 의 기록  (0) 2022.04.23