Computer Science/Database
-
Engine=InnoDB는 뭘 지정해주는 걸까 - MySQL 엔진과 스토리지 엔진Computer Science/Database 2023. 7. 9. 23:05
MySQL 아키텍처 MySQL 서버는 MySQL 엔진, 스토리지 엔진으로 구분 스토리지 엔진은 핸들로 API를 만족하면 누구든 구현해서 서버에 추가 가능 MySQL 엔진 아키텍처 MySQL 엔진 MySQL 엔진은 아래의 역할들을 수행하며 요청된 SQL 문장을 분석, 최적화하는 핵심 처리를 함 커넥션 핸들러: 클라이언트로부터의 접속 및 쿼리 요청을 처리 SQL 파서 전처리기 옵티마이저: 쿼리를 최적화 하여 실행 스토리지 엔진 실제 데이터를 디스크 스토리지에 저장하거나 데이터를 읽어오는 부분을 전담 스토리지 엔진은 여러 개를 동시에 사용할 수 있다 각 스토리지 엔진은 성능 향상을 위해 키 캐시나 InnoDB 버퍼 풀과 같은 기능을 내장 mysql> CREATE TABLE test_table (fb1 INT,..
-
동시성 제어 메커니즘 - 낙관적 락, 비관적 락Computer Science/Database 2021. 12. 7. 19:18
Concurrency Control Mechanisms Database Lock ❓ RDBMS에서 트랜잭션 시스템에 적용되는 동시성 제어 방법. 특정 트랜잭션이 레코드에 접근 중 일때 다른 트랜잭션이 해당 데이터에 접근하지 못 하게 막는 것을 의미한다. 일반적으로 Lock의 단위가 너무 작으면 독립성이 보장받지 못 하고, 너무 크면 트랜잭션이 직렬화 되어 수행 시간이 느려진다. Optimistic Concurrency Control 여러 트랜잭션이 서로 간섭하지 않고 자주 완료될 수 있다고 가정하는 동시성 제어 방식. 일반적으로 Block Contention(동일한 인덱스나 데이터 블록에 동시에 액세스하기 위해 경쟁하는 프로세스 또는 인스턴스)이 낮은 환경에서 사용한다. 원하는 규칙이 커밋 시 위반되면 ..
-
DB의 비정상 수행을 유발하는 SQL Injection을 예방하기Computer Science/Database 2021. 10. 31. 15:34
SQL Injection 이란? SQL Injection이란 SQL 쿼리문을 조작할 수 있는 입력을 사용해서 데이터를 악의적으로 이용하거나 탈취할 수 있는 공격을 의미한다. 주로 로그인, 사용자 입력 창에서 입력 값에 대한 검증 로직이 빈약할 경우 발생할 수 있으며 이로 인한 피해는 인증 우회/원격 명령 실행/DB 정보 수정,삭제,탈취와 같은 피해가 발생할 수 있다. 2017년 우리나라 숙박 애플리케이션 여기어때도 SQL Injection으로 인해 고객 정보를 탈취당한 사례가 있다. public List unsafeFindAccountsByCustomerId(String customerId) throws SQLException { // UNSAFE !!! DON'T DO THIS !!! Strin..
-
TCL(Transaction Control Language) in MySQLComputer Science/Database 2021. 9. 17. 22:28
DBMS에서 사용할 수 있는 SQL Commands는 크게 DDL(Data Definition Launguage): 데이터베이스, 테이블을 제어 DML(Data Manipulation Launguage): 테이블 내 데이터의 검색/등록/삭제/갱신의 연산 제어 DCL(Data Control Launguage): 데이터베이스에 접근할 때의 권한을 제어 TCL(Transaction Control Launguage): 논리적 작업 단위인 트랜잭션에 관한 연산을 제어 로 나뉜다. 대표적인 RDBMS인 MySQL에서의 TCL 연산을 직접 수행해보고 이해해보자 TCL 연산 COMMIT: 트랜잭션 내의 변경 사항을 영속적으로 데이터베이스에 반영한다 ROLLBACK: SAVEPOINT 혹은 마지막 커밋 시점으로 데이터베..
-
데이터의 효율적 검색을 돕는 IndexComputer Science/Database 2021. 7. 10. 02:02
※ 이 글의 전반적인 내용은 아래의 글을 참조하여 작성하였음 https://d2.naver.com/helloworld/1155 Index란? 웹 어플리케이션의 백엔드 성능을 높이기 위해 SQL 튜닝을 사용한다. SQL 튜닝이란, SQL이 DBMS의 인덱스를 활용하도록 SQL을 수정하는 것을 말한다. 따라서 인덱스를 이해하는 것이 좋은 SQL문을 작성하는 것과, 어플리케이션의 성능을 향상시키는 데에 중요하다. Index: 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조 인덱스는 Table 내의 1개의 Column, 혹은 여러 개의 column을 이용하여 생성할 수 있다(RDBMS에서 해당 Table의 Primary Key는 자동으로 Index가 생성된다). 데이터베이스 테이블의 ..
-
Transaction은 논리적 작업 단위의 집합이다Computer Science/Database 2021. 7. 6. 01:03
데이터베이스에서 의미하는 트랜잭션이란 데이터베이스 관리 시스템(DBMS) 또는 유사한 시스템(트랜잭션의 성공과 실패가 분명하고 상호 독립적이며 일관되고 신뢰성 있는 시스템)에서의 가장 작은 상호작용 단위를 말한다. Transaction: 하나의 논리적 작업 단위를 구성하는 일련의 연산들의 집합 ex) 계좌 간의 자금 이체 한 계좌에서 다른 계좌로 10만원을 이체하는 작업은 한 계좌에서 10만원 인출 + 다른 계좌로 10만원 입금의 두 작업으로 구성된다 하지만 전체 작업이 정상적으로 처리될 수 없는 경우 아무 것도 실행되지 않은 처음 상태로 복구되어야 한다 따라서 트랜잭션이란 다양한 데이터 항목들을 액세스하고 갱신하는 프로그램 수행의 단위가 된다 위의 그림은 트랜잭션이 가질 수 있는 상태를 나타낸다 Act..