본문 바로가기
728x90

DataBase70

[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.
[Data] 데이터 마트의 구축(치환, 추가, 스냅샷 테이블, 이력테이블) 이번 포스트에서는 '시각화를 위해 데이터 마트를 만드는 절차'에 대해서 포스트 하겠습니다. 팩트 테이블 -팩트 테이블의 작성에는 추가(append)와 치환(replace) 가 있다. -추가: 새로 도착한 데이터만을 증분으로 추가 INSERT INTO 를 통해 기존의 테이블에 데이터가 추가되는 형태 -치환: 과거의 데이터를 포함하여 테이블 전체를 치환한다. DROP TABLE IF EXISTS tablename 을 통해 삭제 후, CREATE TABLE IF NOT EXISTS tablename을 통해 다시 만드는 과정이 '치환' 테이블 파티셔닝(table partitioning) -효율만을 생각 했을 때는 추가가 압도적으로 유리, 하지만 단점 또한 존재 단점 1. 추가에 실패한 것을 알아채지 못하면 팩트.. 2021. 8. 8.
728x90