본문 바로가기
728x90

전체 글249

[RealMysql 8.0] 데이터 압축 6 ~ 7.5.3 데이터 압축 부터 인덱스전까지는 빠르게 읽어보고 그냥 넘어갈꺼임 추후 업데이트 예정. mysql 서버에서 디스크에 저장된 데이터 파일의 크기는 일반적으로 쿼리의 처리 성능과 직결되며, 백업 및 복구 시간과도 밀접한 관계로 연결된다. 파일이 크면 클수록 쿼리를 처리하기위해서 더 많은 데이터 페이지를 INnoDB 버퍼 풀로 읽어야 할 수도 있고, 새로운 페이지가 버퍼 풀로 적재되기 때문에 그만큼 더티 페이지가 더 자주 디스크로 기록돼야 한다. 더티 페이지: 버퍼 풀에 저장된 데이터가 디스크와 동기화 되지 않은 페이지를 말함. 여튼 이러한 문제점을 해결하기 위해 크게 2가지 방식의 데이터 압축 기능을 제공한다. 1.페이지 압축, 2.테이블 압축. 페이지 압축 추후 예정.볼게 많아서 인덱스 까지 빠르게 넘어 감. 2023. 2. 5.
[RealMysql 8.0] mysql의 격리수준 5.4 ~ 5.4.4 개인적으로 아키텍처 부분보다 역시 트랜잭션 부분이 더 재밌는거 같다... 트랜잭션 특성 ACID https://jeong0427.tistory.com/81 트랜잭션 격리수준(Isolation Level)이란 여러 트랜잭션이 동시에 처리될 대 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지는 결정 하는 것. 격리 수준은 크게 아래와 같이 4가지로 나뉠 수 있다. READ UNCOMMITTED(커밋되지 않은 읽기) READ COMMITTED(커밋된 읽기) REPEATABLE READ(반복 가능한 읽기) SERIALIZABLE(직렬화 가능) 4개의 격리 수준에서 순서대로 뒤로 갈수록 각 트랜잭션 간의 데이터 격리(고립) 정도가 높아지며, 동시 처리 성능도 떨어지는 것이.. 2023. 2. 5.
[RealMysql 8.0]5 트랜잭션과 잠금 5.3 ~ 5.3.3 InnoDB 스토리지 엔진 잠금 InnoDB 스토리지 엔진은 mysql 에서 제공되는 잠금과는 별개로 스토리지 엔진 내부에서 레코드 깁ㄴ의 잠금 방식을 탑재 함 이원화된 잠금 방식 때문에 MyISAM 보다는 훨씬 뛰어난 동시성 처리를 제공할 수 있다. 이원화된 잠금 데이터베이스 트랜잭션이 복수의 레코드에 적용되는 잠금을 말한다. 이로인해 데이터베이스의 일관성을 보장하고, 복수의 사용자가 동시에 동일한 레코드에 접근하려 할 때 충돌을 방지 함. 하지만 이원화된 잠금 처리 탓에 InnoDb 스토리지 엔진에서 사용되는 잠금에 대한 정보는 mysql 명령을 이용해 접근하기 까다롭다. 하지만 최근 버전에서는 InnoDb의 트랜잭션과 잠금, 그리고 잠금 대기 중인 트랜잭션의 목록을 조회할 수 있는 방법이 도입됐다... 2023. 2. 5.
mysql 트랜잭션 잠금 확인 쿼리. InnoDB 스토리지 엔진 잠금 InnoDB 스토리지 엔진은 mysql 에서 제공되는 잠금과는 별개로 스토리지 엔진 내부에서 레코드 깁ㄴ의 잠금 방식을 탑재 함 이원화된 잠금 방식 때문에 MyISAM 보다는 훨씬 뛰어난 동시성 처리를 제공할 수 있다. 이원화된 잠금 데이터베이스 트랜잭션이 복수의 레코드에 적용되는 잠금을 말한다. 이로인해 데이터베이스의 일관성을 보장하고, 복수의 사용자가 동시에 동일한 레코드에 접근하려 할 때 충돌을 방지 함. 하지만 이원화된 잠금 처리 탓에 InnoDb 스토리지 엔진에서 사용되는 잠금에 대한 정보는 mysql 명령을 이용해 접근하기 까다롭다. 하지만 최근 버전에서는 InnoDb의 트랜잭션과 잠금, 그리고 잠금 대기 중인 트랜잭션의 목록을 조회할 수 있는 방법이 도입됐다... 2023. 2. 5.
[RealMysql 8.0]5 트랜잭션과 잠금 네임드락 5.2.3 ~ 5.2.4 네임드 락(Named Lock) GET_LOCK() 함수를 이용해 문자열에 대해 잠금을 설정할 수 있다. 단순히 사용자가 지정한 문자열에 대해 획득하고 반납하는 잠금이다. 자주 사용되지 않는다. 음..보다가 궁금증이 생겨 찾아봤다..굳이 네임드 락을 걸어야할까 그냥 레코드 락 걸면안되나? 레코드 락은 특정 레코드에 대한 접근을 제어하는 것이고, 네임드 락은 특정 테이블 이나 리소스에 대한 접근을 제어하는 것이다. 같은 테이블에서 여러 트랜잭션이 동시에 수행될 경우, 레코드 락은 특정 레코드만 잠글 수 있어서 문제가 발생할 수 있다. 네임드 락 같은 경우 테이블 전체에 대한 접근을 제어하기 때문에 같은 테이블에서 동시에 수행되는 트랜잭션을 모두 제어할 수 있다. 따라서 네임드 락을 설정하는 것은 트랜잭션 .. 2023. 2. 4.
[RealMysql 8.0]5 트랜잭션과 잠금 5.1 ~ 5.2.2 테이블 락 읽어보면 좋은?https://jeong0427.tistory.com/81 mysql 트랜잭션 ACID 트랜잭션 데이터베이스의 상태를 변경하는 여러개의 작업을 단위로 묶어서 처리하는 것. 이러한 트랜잭션은 ACID 의 성질에 만족해야 한다 트랜잭션이 시작되면 전체 트랜잭션이 완료될 때까지 jeong0427.tistory.com 트랜잭션은 작업의 완전성을 보장해 주는것이다.논리적인 작업 셋을 모두 완벽하게 처리하거나 처리하지 못할 경우 원 상태로 복구해서 작업의 일부분만 적용되는 현상이 발생하지 않게 만들어 준다. 잠금과 트랜잭션은 비슷한 개념 같지만 잠금은 동시성을 ㅔ저아힉 위한 기능이고, 트랜잭션은 데이터의 정합성을 보장하기 위한 기능이다. 트랜잭션 기존 MyISAM, MEMORY 스토리지 엔진은 트랜잭.. 2023. 2. 4.
mysql 잠금: 명시적 잠금, 묵시적 잠금 명시적 사전 적 의미 내용이나 뜻을 분명하게 드러내 보이는, 또는 그런 것. 묵시적 사전 적 의미 직접적으로 말이나 행동으로 드러내지 않고 은연중에 뜻을 나타내 보이는. 또는 그런 것. 명시적 락 SQL 문을 통해 사용자가 명시적으로 요청하는 잠금 사용자는 LOCK TABLES 문을 사용하여 테이블 잠금을 요청할 수 있다. 테이블 데이터에 대한 동시 엑세스를 제어하고 데이터 일관성을 보장한다. 일반적으로 여러 사용자가 동일한 데이터를 수정해야 하는 시나리오에서 사용되며, 잠금은 한번에 한 사용자만 데이터를 수정할 수 있다. InnoDB 테이블의 경우에는 스토리지 엔진 차원에서 레코드 기반의 잠금을 제공하기 때문에 단순 데이터 변경 쿼리로 인해 묵시적 테이블 락이 설정되지는 않는다. 더 정확히는 InnoD.. 2023. 2. 4.
mysql 소스서버 레플리카 서버 일반적인 MySQL 서버의 구성은 소스서버(Source Server)와 레플리카 서버(Replica Server)로 구성된다. 소스서버(기본 서버 또는 원본 서버) 데이터를 저장하고 관리하는 주 서버 모든 읽기 및 쓰기 작업은 해당 서버에서 수행된다. 레플리카 서버(복제서버) 원본 서버의 데이터베이스 사본 역할. 주 서버에 장애가 발생할 경우 보조 데이터 원본을 제공하는데 사용된다. 해당 서버는 복제라는 프로세스를 통해 주 서버의 데이터로 지속적으로 업데이트 된다.이로인해 비상 시 백업으로 사용될 수 있다. 2023. 2. 4.
mysql REPAIR TABLE과 OPTIMIZE TABLE MySQL에서 REPAIR TABLE과 OPTIMATE TABLE은 데이터베이스 테이블의 성능을 유지하고 향상시키는 데 사용되는 두 개의 개별 명령입니다. REPAIR TABLE 테이블에서 손상된 손상된 테이블을 복구하는 데 사용된다. 테이블이 복귀되면 원래 데이터가 테이블에 복원되고, 인덱스가 다시 생성된다 OPTIMATE TABLE 데이터 파일을 조각 모음하는 데 사용된다. 이로인해 데이터 성능이 향상될 수 있다. 데이터가 테이블에서 삽입, 업데이트, 삭제 등을 거치면 파일이 조각화 될 수 있는데 이를 최적화하며 압축하며, 사용되지 않는 공간을 회수하며 테이블을 효율적으로 변경한다. 2023. 2. 4.
728x90