MySQL 트랜잭션, 락, 격리 수준
·
DB
트랜잭션트랜잭션이란?트랜잭션은 작업의 완전성을 보장해준다.즉, 논리적인 작업 셋을 모두 완벽하게 처리 OR 처리 못할 경우 원상태로 복구하여 일부만 적용되는 현상을 막아준다.MySQL에서의 트랜잭션트랜잭션은 꼭 여러 개의 변경 작업을 수행하는 쿼리가 조합되었을때만 의미있는 개념은 아니다.하나의 논리적 작업 셋에 쿼리가 1개건 2개건 상관없이 트랜잭션을 사용하여 작업의 완전성을 보장할 수 있다.트랜잭션 관점에서 InnoDB와 MyISAM 테이블의 차이CREATE TABLE table_myisam ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=MyISAM;INSERT INTO table_myisam (id) VALUES (3);CREATE TABLE ta..
MySQL 아키텍처 (Real MySQL 8.0 4장)
·
DB
아키텍처MySQL 엔진 아키텍처MySQL 전체 구조출처MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분할 수 있다.MySQL 엔진MySQL 엔진은 아래와 같이 나눌 수 있다.클라이언트로부터의 접속 및 쿼리 요청을 처리하는 커넥션 핸들러SQL 파서 및 전 처리기쿼리의 최적화된 실행을 위한 옵티마이저또한 MySQL은 표준 SQL(American National Standards Institute, ANSI SQL)을 지원하기에 표준 문법에 맞는 쿼리를 작성하면 타 DBMS에서도 실행될 수 있다.스토리지 엔진MySQL 엔진은 요청된 SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당하는 처리를 수행한다.실제 데이터를 디스크 스토리지에 저장하거나 디스크 스토리지로부터 데이터를 읽어오는 ..
Real MySQL 8.0 1, 2, 3장
·
DB
MySQL 소개 (1장)MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)으로, 세계적으로 가장 많이 사용되는 데이터베이스 중 하나입니다. MySQL은 다중 사용자, 다중 스레드를 지원하며, 다양한 운영 체제에서 사용할 수 있습니다. 또한 MySQL은 다양한 프로그래밍 언어를 지원하며, 다양한 클라이언트 프로그램과 연동할 수 있습니다.MySQL은 엔터프라이즈 에디션과 MySQL 커뮤니티 에디션으로 두 가지가 있습니다.별도의 라이선스를 구매하지 않아도 무료로 사용할 수 있는 MySQL 커뮤니티 에디션은 오픈 소스로 제공되며, 소스 코드를 수정하여 자신의 프로그램에 적용할 수 있습니다. MySQL 커뮤니티 에디션은 MySQL 데이터베이스 서버, MySQL 클라이언트 프로그램, MySQL 워크..
[Postgresql] 외래키 참조 테이블 조회 방법
·
DB
주어진 테이블이 참조되는 테이블인 경우의 외래 키 관계를 찾는 법 SELECT CCU.table_name AS search_table_name, CCU.column_name AS search_column_name, KCU.table_name AS foreign_table_name, KCU.column_name AS foreign_column_name, KCU.constraint_name AS foreign_constraint_name FROM information_schema.table_constraints AS TC JOIN information_schema.key_column_usage AS KCU ON TC.constraint_name = KCU.constraint_name JOIN informat..
폴더 구조 DB 스키마 설계
·
DB
폴더 구조 DB 스키마 예시 목록 Closure Table Folders: folder_id folder_name FolderRelationships: ancestor_id descendant_id depth 장점 참조 완결성 ancestor_id, descendant_id를 통해 실제 노드의 id를 참조 서브트리 사용 용이 깊이에 따른 성능 문제 트리 깊이가 늘어나도 일관된 성능 유지 가능 단점 공간 복잡도 증가 노드 간 관계를 저장하기에 데이터가 늘어남에 따라 공간 복잡도 증가 데이터 양 증가 관계 데이터가 O(n²) Closure Table - Store Hierarchical Data Seamlessly | PostgreSQL Path Enumeration 테이블명: Folders 필드명: fol..
DB PK UUID VS auto increment(serial)
·
DB
UUID vs INT ❓ PK를 INT로 해야할지 UUID로 해야할지? 먼저, INT의 범위는 2,147,483,647(4byte)까지 가능하다. 다만 추후 장기적으로 보았을 때 UUID나 nano id를 사용하는 것이 나을지 의문이다. UUID 장점 독립적이다. 어떠한 환경에서도 uuid 생성 함수 등을 이용해 사용이 가능하다. 보안상 안전하다. int의 경우 path로 노출될 때 정보가 쉽게 파악가능해지게 된다. 경쟁사에서 고객 수 파악 크롤링 인젝션 공격 취약 단점 길어서 상대적으로 성능 저하 저장공간을 많이 차지한다. 사람이 보기 힘들다. 정렬이 불가능하다. INT 장점 사람이 파악하기 쉽다. 상대적으로 빠르고 가볍다. 단점 분산 시스템에서 부적합 서버 A, 서버 B가 나뉘었을 때 서버 A에 있는..