개발/Database

이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course파티셔닝파티셔닝이란?- 파티셔닝: 거대 테이블을 여러 개의 테이블로 분할하고, WHERE 절에 따라 어떤 테이블 또는 파티션에 접근할지 결정하는 기술- 실제 데이터가 담기는 테이블을 TEMP_100K, TEMP_200K, TEMP_300K... 이런 식으로 나누고, TEMP(master table) 테이블은 실제 데이터는 갖고 있지 않음.- ex) TEMP로 id = 210,001에 대한 조회 쿼리가 오면 DB는 TEMP_200K에서 찾아서 주는 방식 사용법- 아..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course B-TreeB-Tree 필요성- Full Table Scans: large tables를 읽는 것은 느림... 모든 page를 읽으면 많은 디스크 IO 발생B-Tree란- 빠른 탐색을 위해 만들어진 균형잡힌 데이터 구조로 검색 공간을 최소화하는게 목표 - B-tree는 노드로 구성되어 있음, m이라는 차수를 가짐... 차수는 기본적으로 각 노드가 가질 수 있는 자식 노드의 수에 해당됨,- m degree 트리의 노드는 m-1 elements를 가짐... 각 el..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course 인덱싱 시작하기- explain analyze로 실행계획(쿼리계획)을 분석할 수 있음explain analyze select * from temp;Index only scan : Heap에서 fetch할 필요 없어 제일 빠르고 좋은 경우Parallel seq scan : 전체를 다 훑어야해서 최악의 경우. - create index로 인덱스 생성 가능create index temp_t on temp(t); - where 문으로 특정하였을 때 효과있지만, LIKE..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course 테이블과 인덱스가 저장되는 방식논리적 테이블 -> 열과 행(혹은 document)으로 이뤄져 있음 Row_ID- 특정 행 ID를 고유하게 식별(Postgres에서는 tuple ID)- MySQL에서는 기본 키가 사실상 가짜(sudo) 행 ID가 됨, 다른 DB에서는 별개의 새로운 행 ID가 열에 생성됨 Page- 행은 논리적 페이지에 저장됨, 기술적으로 한 페이지에 많은 행이 들어갈 수 있음- 페이지는 고정된 크기(MySQL는 16kb)의 메모리 위치로, 디스크..
이 글은 'Fundamentals of Database Engineering'에 관한 아래 유데미 강의를 보고, 공부한 내용을 정리하였습니다.https://www.udemy.com/course/database-engines-crash-course 트랜잭션트랜잭션이란? : 하나의 작업 단위로 취급되는 한 개 이상의 쿼리 모음트랜잭션 수명 : BEGIN -> COMMIT -> ROLLBACK(when crash)트랜잭션의 본질: 데이터를 변경하고 수정하는데 사용, 읽기 전용일 수도 있음읽기 트랜잭션: 무언가가 동시 트랜잭션 때문에 바뀌어도 신경쓸 필요 없음 트랜잭션은 항상 BEGIN 해야하고, 그렇지 않을시 DB에서 암묵적으로 BEGIN을 실행함... 항상 트랜잭션 안에 있음 원자성(Atomicity)원자성..
문제 상황 AWS RDS를 사용하다가 프리티어 기간이 만료되어서 새로운 계정으로 DB를 옮겨야할 일이 생겼다. 문제는 현재 개발 환경상 사지방 PC 자체에서 각종 포트들이 막혀있어서, mysql workbench와 같은 상용프로그램을 사용할 수 없는 상태이다. 그래서 외부 리눅스 서버에 웹콘솔로 접속을해서 해당 DB의 Mysql Dump를 뜨고, 옮겨서 load를 해야하는 상황이다. 해결 방법 1. AWS EC2를 생성 및 mysql-client 설치 sudo apt update sudo apt install mysql-client 2. mysqldump 명령어로 덤프 파일 만들기 mysqldump -u -p -h > 위와 같은 형태로 덤프 파일을 추출할 수 있다. 아래는 예시이다. mysqldump -..
파이랜스
'개발/Database' 카테고리의 글 목록