본문 바로가기
728x90

전체 글69

8.인덱스 - 인덱스란? 이번 포스트에서는 MySQL의 인덱스에 대해서 알아보겠습니다. 인덱스 DBMS에서 데이터의 저장(INSERT, UPDATE, DELETE)성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능입니다. SELECT 쿼리 문장 WHERE 조건절에 사용되는 컬럼이라고 해서 전부 인덱스로 생성하면 데이터 저장 성능이 떨어지고 인덱스의 크기가 비대해져 오히려 역효과가 날 수 있습니다. 인덱스는 크게 프라이머리 키(Primary Key)와 보조 키(Secondary Key)로 구분할 수 있습니다. 프라이머리 키(Primary Key) 그 레코드를 대표하는 컬럼의 값으로 만들어진 인덱스를 의미합니다. 이 컬럼은(때로는 복합 키로 컬럼의 조합이 될 수 있음) 테이블에서 해당 레코드를 식별할 수 있는 기준값이 되기 .. 2022. 12. 14.
5.트랜잭션과 잠금 - MySQL 격리 수준 이번 포스트에서는 MySQL 격리 수준에 대해서 알아보겠습니다. MySQL 격리 수준 여러 트랜잭션이 동시에 변경 및 조회를 수행할 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하려는 데이터를 볼 수 있게 허용할지 말지를 결정하여 일관성을 유지하는 설정입니다. 격리 수준은 크게 밑의 4가지로 나뉩니다. READ UNCOMMITTED READ COMMITTED REPEATABLE READ(MySQL InnoDB Default) SERIALIZABLE READ UNCOMMITTED 각 트랜잭션 변경 내용이 commit이나 rollback 여부에 상관없이 다른 트랜잭션에서 조회 가능한 격리 수준입니다. 이처럼 다른 트랜잭션에서 처리한 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있는 현상을 DI.. 2022. 12. 12.
5.트랜잭션과 잠금 - InnoDB 스토리지 엔진 잠금 이번 포스트에서는 InnoDB 스토리지 엔진 잠금의 종류에 대해서 알아보도록 하겠습니다. InnoDB 스토리지 엔진 잠금 InnoDB 스토리지 엔진은 MySQL에서 제공하는 잠금과는 별개로 레코드 기반의 잠금을 탑재하고 있습니다. 레코드 기반의 잠금을 제공하기 때문에 다른 스토리지 엔진보다 훨씬 뛰어난 동시성 처리를 제공합니다. MySQL 서버의 information_schema 데이터베이스에 존재하는 INNODB_TRX, INNODB_LOCKS, INNODB_LOCKS_WAITS 테이블을 조인해서 어떤 잠금이 대기하고 있고 해당 잠금을 어떤 트랜잭션이 가지고 있는지 확인이 가능하며 장시간 잠금을 가지고 있는 클라이언트를 찾아서 종료시킬 수 있습니다. 레코드 락(Record Lock) 레코드 락은 레코드.. 2022. 12. 11.
5.트랜잭션과 잠금 - 트랜잭션과 MySQL 엔진의 잠금 이번 포스트에서는 트랜잭션과 MySQL 엔진의 잠금에 대해서 알아보겠습니다. 트랜잭션(Transaction) 트랜잭션이란 작업의 완전성을 보장해주는 것 입니다. 논리적인 작업셋을 모두 완벽하게 처리하거나 처리하지 못할 경우에는 원 상태로 복구해서 작업의 일부만 적용되는 현상 (Partial Update)이 발생하지 않게 만들어주는 기능입니다. 즉, 하나의 논리적인 작업셋이(여러 SQL 문) 100% 적용되거나(COMMIT) 아무것도 적용되지 않아야(ROLLBACK 또는 트랜잭션을 ROLLBACK 시키는 오류가 발생했을 때)함을 보장해줍니다. MyISAM, MEMORY 스토리지 엔진은 트랜잭션 기능을 제공하지 않기 때문에 Partial Update 현상이 발생하고, InnoDB 스토리지 엔진은 트랜잭션 기.. 2022. 12. 5.
4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(3) 2022.12.01 - [RealMySQL] - 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(2) 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(2) 2022.11.28 - [RealMySQL] - 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 이번 포스트에서는 MySQL의 스토리지 엔진 중 하나인 InnoDB 스토리지 rbsks.tistory.com 2022.11.28 - [RealMySQL] - 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 이번 포.. 2022. 12. 2.
4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(2) 2022.11.28 - [RealMySQL] - 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 4.MySQL 아키텍처 - 4.2 InnoDB 스토리지 엔진 아키텍처(1) 이번 포스트에서는 MySQL의 스토리지 엔진 중 하나인 InnoDB 스토리지 엔진 아키텍처에 대해서 포스트하려합니다. InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 rbsks.tistory.com 전 포스트에 이어서 MySQL InnoDB 스토리지 엔진 아키텍처에 대해서 더 알아보려고 합니다. InnoDB 버퍼 풀 InnoDB 스토리지 엔진에서 가장 핵심적인 부분으로, 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간이면서 쓰기 작업을 지연시켜 일괄.. 2022. 12. 1.
728x90