반응형

SQL & DB 67

[PostgreSQL] PostgreSQL의 특징과 장단점

PostgreSQL이란 오픈소스로 개발된 관계형 데이터베이스 ( ORDBMS) 다양한 영역에서 활용되고 있으며, 오라클/MySQL/MsSQL다음으로 많이 사용되는 RDBMS PostgreSQL 특징 1. 라이센스 비용이 전혀 들지 않음 PostgreSQL은 BSD(Berkeley Software Distribution) 라이센스를 활용하여 개발되었음 PostgreSQL은 자유로운 오픈 소스 라이선스를 통해 원하는 대로 DBMS를 사용, 수정 및 배포할 수 있음 따라서 데이터 volume가 커지더라도 라이센스 문제가 없기에, 기업에서는 부담이 전혀 없음 CF) BSD(Berkeley Software Distribution) BSD는 미국 캘리포니아 대학교 버클리의 CSRG(Computer System Re..

SQL & DB/PostgreSQL 2023.12.08

[PostgreSQL/MYSQL] 날짜/시간 계산(INTERVAL타입, age함수) (DATEDIFF, TIMESTAMPDIFF)

DATASET QUERY DROP TABLE IF EXISTS mst_users_with_dates; CREATE TABLE mst_users_with_dates ( user_id varchar(255) , register_stamp varchar(255) , birth_date varchar(255) ); INSERT INTO mst_users_with_dates VALUES ('U001', '2020-02-28 10:00:00', '2000-02-29') , ('U002', '2020-02-29 10:00:00', '1992-03-29') , ('U003', '2020-03-01 10:00:00', '2002-01-29') , ('U004', '2020-03-01 11:00:00', '1988-08-..

SQL & DB/PostgreSQL 2023.11.24

[PostgreSQL] CSV File를 Table에 삽입(Import)하기.

CSV파일을 PostgreSQL에 삽입하는 방법은 다음과 같습니다. 먼저 데이터를 다운로드합니다. 그리고 데이터를 넣을 데이블을 만들어줍니다. DROP TABLE IF EXISTS sale_data; CREATE TABLE sale_data ( order_id SERIAL, date DATE, category VARCHAR(50), itemcode integer, price integer, amount integer, Primary KEY(order_id) ); 데이블을 만들어 준후 CSV파일을 IMPORT하는 방법은 PSQL을 이용하는 것과 PgAdmin 기능을 이용하는 2가지 방법이 있습니다. PSQL로 CSV파일 IMPORT하기 psql을 실행합니다. 실행후 서버, 데이터베이스, 포트, 이름, 암호..

SQL & DB/PostgreSQL 2023.03.05

[PostgreSQL] 중복행 제거

PostgreSQL에서 중복을 제거하는 방법은 다음과 같습니다. 로직의 원리는 중복되지 않는 데이터의 id만을 필터링해서 해당 id가 아닌 id를 제거하는 로직입니다. 1. 중복 제거하고자 하는 컬럼들만 group by 해서 가장 앞의 id만 남기는 로직 DELETE FROM table_name WHERE id NOT IN ( SELECT MIN(id) FROM table_name GROUP BY column_name ); 2. 중복 제거하고자 하는 컬럼들을 기준으로 rank를 매긴 다음에, 가장 앞의 id만 남긴다. DELETE FROM table_name WHERE id IN ( SELECT T.id FROM ( SELECT id , ROW_NUMBER() OVER(PARTITION BY column..

SQL & DB/PostgreSQL 2023.02.18

[SQL 튜닝] SQL 옵티마이저

선택도와 카디널리티 1. 선택도 : 조건절에 의해 선택되는 레코드 비율 선택도 = 1 / NDV(컬럼 값 종류 개수) 카디널리티 : 전체 레코드 중 조건절에 의해 선택되는 레코드 수 카디널리티 = 총 로우 수 * 선택도 = 총 로우 수 / NDV 옵티마이저는 카디널리티를 구하고, 데이터를 액세스하는데 드는 비용을 계산해서 데이블 액세스 방식, 조인순서, 조인방식 등을 결정 선택도를 제대로 계산하는 것이 중요 통계정보 테이블 통계 인덱스 통계 컬럼 통계 : 테이블 통계 수집할 때 함께 수집. '=' 조건에 대한 선택도는 데이터 분포가 균일하지 않은 컬럼에서는 잘못 산출될 수 있기 때문에 옵티마이저는 일반적인 컬럼통계 외에 히스토그램을 추가로 활용 시스템 통계 : 애플리케이션 및 하드웨어 성능 특성 측정 C..

SQL & DB/SQL 튜닝 2021.06.26

[SQL 튜닝] Lock과 트랜잭션 동시성 제어

오라클 Lock - 공유 리소스와 사용자 데이터를 보호할 목적으로 DML Lock, DDL Lock, 래치, 버퍼 Lock, 라이브러리 캐시 Lock/Pin 등 다양한 종류의 Lock을 사용 - 래치 : SGA에 공유된 각종 자료구조를 보호하기 위해 사용 - 버퍼 LOCK : 버퍼 블록에 대한 액세스를 직렬화 하기 위해 사용 - 라이브러리 캐시 Lock와 Pin은 라이브러리 캐시에 공유된 SQL 커서와 PL/SQL프로그램을 보호하기 위해 사용 - 애플리케이션 개발에서 가장 중요한 것은 DML LOCK - 다중 트랜잭션이 동시에 액세스하는 사용자 데이터의 무결성 보호 DML 로우 Lock - 두개의 동시 트랜잭션이 같은 로우를 변경하는 것을 방지 - DML 로우 Lock에는 배타적 모드를 사용하므로 UPD..

SQL & DB/SQL 튜닝 2021.06.19

[SQL 튜닝] 파티션을 활용한 DML튜닝

테이블 파티션 - 파티셔닝은 테이블 또는 인덱스 데이터를 특정 컬럼(파티션 키) 값에 따라 별도 세크먼트에 나눠서 저장하는 것 - 파티션이 필요한 이유 1. 관리적측면 : 파티션 단위 백업, 추가, 삭제, 변경 --> 가용성 향상 2. 성능 측면 : 파티션 단위 조회 및 DML, 경합 또는 부하 분산. 1) Range 파티션 주로 날짜 컬럼을 기준으로 파티셔닝함. 파티션 테이블에 대한 SQL 성능 향상 원리는 파티션 Pruning(=elimination)에 있음. 파티션 pruning이란 SQL 하드파싱이나 실행 시점에 조건절을 분석해서, 읽지 않아도 되는 파티션 세그먼트를 액세스 대상에서 제외하는 기능. 파티션도 클러스터, IOT와 마찬가지로 관련있는 데이터가 물리적으로 인접하도록 저장하는 클러스터링 ..

SQL & DB/SQL 튜닝 2021.06.07

[SQL 튜닝] SQL분석도구(MYSQL)

실행계획 확인 1. Explain 실행계획 확인 방법 EXPLAIN SELECT * FROM 테이블 2. 컬럼별 내용정리 MySQL Query 추적 MySQL에 root로 로그인합니다. -general_log 확인 일반적으로 모든 쿼리에대한 로그를 남기기 위해 general_log Value 값을 변경해 주어야한다. general log란 MySQL에서 실행되는 전체 쿼리에 대한 로그이며, general log를 활성화하면 MySQL이 쿼리 요청을 받을 때 즉시 general log에 기록 SHOW VARIABLES LIKE '%general%'; -general_log 상태값 변경 상태값을 ON으로 변경해준다.(mysql 재시작 필요 없음) general_log_file의 기본 경로에서 실시간으로 입력..

SQL & DB/SQL 튜닝 2021.05.01

[SQL 튜닝] 인덱스 튜닝(1) - 테이블 액세스 최소화 및 부분범위 처리 활용

테이블 액세스 최소화 ROWID 논리적 주소에 가까움 포인터라고 이야기 하는 사람이 많지만 포인터가 아니다. 지시봉처럼 어딘가를 가리킨다는 의미에서는 포인터가 맞지만, 프로그래밍에서 배우는 포인터와는 전혀 상관 없음 메인메모리DB(MMDB) 잘 츄닝된 OLTP성 데이터베이스 시스템이면 버퍼캐시 히트율 99%이상. -> 디스크를 경유하지 않고 대부분 데이터를 메모리에서 읽는다는 뜻 But 메인메모리 DB만큼 빠르지 않음 메인 메모리DB의 경우 인스턴스를 기동하며 디스크에 저장된 데이터를 버퍼캐시로 로딩하고 이어서 인덱스로 생성한다. 오라클처럼 디스크 상의 주소정보를 갖는게 아니라 메모리상의 주소정보, 즉 포인터를 가지기 때문에 인덱스를 경유해 테이블을 액세스하는 비용이 낮다. I/O 매커니즘 DBA(=데이..

SQL & DB/SQL 튜닝 2021.05.01
반응형