본문 바로가기
728x90

DataBase71

[SQL] SQL 성능확인, Query Plan 보는 법 (Oracle, MySQL) 1. Query Plan이란? SQL 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터 접근에 사용되는 순서가 있는 단계별 집합 엑세스 플랜의 관계형 모델 개념의 특화된 경우 SQL이 선언형이기 때문에 주어진 쿼리를 실행하기 위해 수많은 방법이 존재하는 것이 일반적이며 이에 따라 다양한 성능 차이를 보임 Query Optimizer는 Query 실행을 위한 각기 다른 가능성 있는 올바른 플랜 중 일부를 평가한 다음 최적의 옵션을 고려할 때 반환 2. Query Plan 보는 법, 요소(Oracle) 1) Query Plan 보는 법 위에서 아래로 내려가면서 제일 먼저 읽을 위치 찾기 내려가는 과정에서 같은 들여쓰기가 있으면, 무조건 위에서 아래 순으로 읽기 같은 레벨에 들여쓰기된 하위 스텝이 존재하면.. 2023. 1. 31.
[MySQL] 바이너리 로그(binlog)란? 1. binlog란? 빈로그 혹은 바이너리 로그는 MySQL 서버 인스턴스의 데이터 변경사항들에 대한 정보를 포함하는 로그 파일의 세트 에러코드, 바이너리 로그 자체에 대한 메타데이터 등 다양한 데이터가 같이 포함되게 됨 기본적으로 Transaction Commit 시에 기록되어지며, 데이터 변경 순서를 보장 주로 복제(Replication) 및 복구(Recovery)를 목적으로 binary log가 사용 됨 복제: Secondary Node 가 Primary Node 로부터 binlog 데이터를 전달받아서 로깅 함(릴레이 로그) 부하분산 기능을 제공, 바이너리 로그는 마스터라는 서버에서 생성되고 슬레이브란 서버는 마스터 서버에 접속하여 이 마스터의 바이너리 로그를 읽어와서 똑같이 그 이벤트를 실행시켜 .. 2023. 1. 19.
[MySQL] MySQL version 확인 방법 1. SQL로 확인 1) SELECT VERSION(); SELECT VERSION(); 2) SHOW VARIABLES LIKE 'VERSION'; SHOW VARIABLES LIKE 'VERSION'; SHOW VARIABLES LIKE '%VERSION%'; 2. shell로 확인 2023. 1. 11.
[SQL] MySQL의 Binding Variables, 바인딩 변수 사용법(mysql,python), 장점 1. 바인딩 변수 사용의 장점 바인딩 변수의 장점은 SQL문 처리과정 중 Parsing과정에서 드러나게 됩니다. 1) SQL문 처리 과정 사용자가 SQL문장(Select)을 실행 SQL 파싱(parsing) SQL 최적화(optimizer) 실행(Execution) 추출(Fetch) 2) Parsing 과정 서버프로세스는 Shared Pool의 LibraryCache를 조회해서 문자 하나하나 공백, 대소문자까지 비교하여 동일한 SQL문장이 있는지 확인 Soft Parsing: 동일한 SQL문장과 SQL구문을 보낸 사용자나 옵티마이저 MODE관련 설정까지 일치하는 SQL커서가 존재하고 있다면, Library Cache의 parse-tree와 Query Execution Plan을 가지고 와서 실행 opti.. 2023. 1. 10.
[Database] PostgreSQL 데이터 타입 정리 PostgreSQL 데이터 타입 분류 종류 내용 숫자 smallint 작은 범위의 정수, 2 bytes(-32768 ~ +32767) integer 정수에 대한 일반적인 선택, 4 bytes(-2147483648 ~ +2147483647) bigint 큰 범위의 정수, 8 bytes(-9223372036854775808 ~ 9223372036854775807) decimal 사용자 지정 정밀도, variable, 정확(제한 없음) numeric 사용자 지정 정밀도, variable, 정확(제한 없음) real 가변 정밀도, 부정확, 4 bytes(6자리 소수점 정밀도) double precision 가변 정밀도, 부정확, 8 bytes(15자리 소수점 정밀도) serial 자동 증가 정수, 4 bytes.. 2022. 9. 1.
[Database] Oracle 시스템 카탈로그 추출하기, 테이블 , 컬럼, 코맨트 정보 확인하기 DA업무를 맡으며, 그간 DBA보고 뽑아달라 했던 테이블 및 컬럼 정보들이 필요하게 됐는데, DBA가 없더라도 제법 추출하기 쉬운 항목들이므로, 직접 뽑아보면서 정리해봤습니다. 1. 테이블 정보 SELECT * FROM DBA_TABLES; -- 데이터베이스 내의 모든 테이블 SELECT * FROM ALL_TABLES; -- 유저가 소유한 테이블, 유저가 접근가능한 테이블 SELECT * FROM USER_TABLES; -- 유저가 소유한 테이블 (현재 유저의 소유목록이기때문에 OWNER 정보가 없다.) DBA_TABLES 출력예시 2. 컬럼 정보 SELECT * FROM DBA_TAB_COLUMNS; -- 데이터베이스내의 모든 컬럼 목록(숨겨진 컬럼 제외) SELECT * FROM ALL_TAB_CO.. 2022. 8. 23.
[Database] Upsert란? DBMS 별 Upsert 예제 1. Upsert(Update + Insert)란? Upsert는 중복되는 값이 있다면 Update를 하고 중복되는 값이 없다면 Insert를 하는 쿼리 Unique Key의 값이 중복된다면 Update를 하고, Unique 컬럼의 값이 존재하지 않는다면 INSERT를 하는 것 Unique Key, 즉 중복되면 값이 있으면 안되는 컬럼에 추가하려는 데이터 값이 중복되지 않으면, INSERT 중복이 된다면, 중복의 대상이 되는 데이터 값을 UPDATE시키는 것(기준은 Unique Key 컬럼이다) 2. Upsert MySQL vs PostgreSQl 1. MySQL INSERT INTO users (col1, col2) VALUES ('val1', 'val2') ON DUPLICATE KEY UPDATE .. 2022. 6. 27.
[DataBase] (Oracle vs MySQL) CTAS(Create Table As Select), INSERT INTO SELECT, TEMP Table, View + with절,Inline view 이번 포스트에는 oracle과 MySQL에서 각각 CTAS, INSERT INTO SELECT가 어떻게 사용되는지, TEMP table과 View의 개념과 장단점 그리고 Oracle과 MySQL에서는 어떻게 다른지에 대해 포스팅 하겠습니다. 1. CTAS(Create Table As Select) CTAS의 기본 개념은 MySQL과 오라클 모두 같다. 1) 기본 문법 CREATE TABLE 'target' AS SELECT * FROM 'origin'; --AS 이후에는 기존의 조회쿼리처럼 원하는 컬럼만 지정하거나 조건절 및 정렬도 가능하다. 2) 데이터는 복사하지 않기 CREATE TABLE 'target' AS SELECT * FROM 'origin' WHERE 1=0; MySQL 기본 문법 데이터 .. 2022. 6. 15.
프로그래밍 언어별 '(홑 따옴표, single quotation) vs "(쌍 따옴표, double quotation) 이번 포스트에는 프로그래밍 언어별 single quotation, double quotation 사용되는 경우를 비교 해보겠습니다. SQL '(홑 따옴표, single quotation) "(쌍 따옴표, double quotation) string, 문자열을 표현 할 때 사용 식별자,객체이름을 표현할 때 사용됨(mysql 에서는 `와 "를 사용) 파이썬 '(홑 따옴표, single quotation) "(쌍 따옴표, double quotation) 의미 있는string, 문자열을 표현 할 때 사용 ex) 'python' 의미 없는 string 문자열을 표현 할 때 사용 ex )"python is fun" 자바 '(홑 따옴표, single quotation) "(쌍 따옴표, double quotation).. 2022. 6. 8.
728x90