DB관련/기타 DB

create table grades ( id serial primary key, g int, name text ); insert into grades (g, name ) select random()*100, substring(md5(random()::text ),0,floor(random()*31)::int) from generate_series(0, 12141215); CREATE INDEX g_idx ON grades (g); id : row_id g : grade name : name 실습1 explain select * from grades; Seq Scan : 쿼리 계획 (Sequential Scan == Full Scan) 힙(heap) 영역으로 바로 가서 가져올 것이다. 순차적으로! cost..
100만개의 행을 가지고 있는 employees을 생성하였다. id(row_id)와 name(이름) 1000001개의 행 ID : Integer | NOT NULL | auto increment (인덱스 가지고 있음) Name : 랜덤으로 만들어진 이름 실행계획과 쿼리의 수행 시간을 확인할 수 있는 postgre 의 명령어 explain analyze [쿼리] 실습1 인덱스가 존재하는 컬럼을 조회(Scan) explain analyze select id from employees where id = 2000; Index Only Scan using employees_pkey on employees ~~ :인덱스를 활용하여 스캔을 진행 Heap Fetches : 0 -> Heap영역에 접근할 필요 없음(w..
준비물 docker postgre 시작 create table temp(t int); insert into temp(t) select random() * 100 from generate_series(0, 1000000); select t from temp limit 10; 백만건의 데이터를 생성!
저장소 개념 Table Row_id Page IO Heap data structure Index data structure b-tree Table EMPLOYEE_ID (Row_id) 특정 행을 고유하게 식별 Postgres : 튜플 ID Page Storage Model(row vs column store)에 따라 행은 논리적 페이지에 저장되고 읽혀진다. 데이터베이스는 단일 행을 읽는 것이 아니라, 단일 IO에서 한 페이지 이상을 읽으며, 해당 IO에서 많은 행을 얻는다. 우리 눈에는 두개의 행만 골라서 읽어온 것처럼 보이지만, 페이지 단위로 저장되어 있는 전체 영역을 스캔하며 필요한 행을 가지고 온 것. Page Size는 DB마다 다르다. (e.g. 8KB in postgres, 16KB in My..
솜사탕코튼
'DB관련/기타 DB' 카테고리의 글 목록