목록DB (4)
생각해보기

DB 와 I/O 데이터베이스의 성능 튜닝은 어떻게 디스크 I/O를 줄이느냐가 관건일 때가 많다. 쿼리 튜닝은 꼭 필요한 데이터만 읽도록, I/O를 줄이는 방향으로 쿼리를 개선하는 것을 의미한다. SSD는 디스크 원판을 기계적으로 회전할 필요가 없어 HDD 보다 빠르게 읽고 쓸 수있다. SSD는 순차 I/O 도 HDD보다 빠르지만 랜덤 I/O에서 훨씬 빠르다. 성능 옵션에서 SSD도 고려해 보자. (SSD 초당 436, HDD 초당 60개 트랜잭션 처리) 디스크의 성능은 얼마나 많은 데이터를 한 번에 기록하느냐에 결정 될 수 있다. 따라서 빈번하게 읽고 쓰는 랜덤 I/O 보다, 순차 I/O가 빠르다. 인덱스 DBMS에서 인덱스는 데이터의 저장성능을 희생하고(일관성 정렬을 유지해야하기 때문에) 그 대신 데이..

Mysql의 잠금이 무엇이 있는지 확인해보고 싶었습니다. Mysql에서 사용되는 잠금은 크게 스토리지 엔진 레벨과 Mysql 엔진 레벨로 나눌 수 있습니다. Mysql 엔진 레벨의 잠금은 모든 스토리지 엔진에 영향을 미치지만, 스토리지 엔진 레벨의 잠금은 스토리지 엔진 간에 영향을 미치지 않습니다. Mysql 엔진 레벨의 잠금은 다음과 같습니다. 글로벌 락 Mysql에서 제공하는 락 중에 가장 범위가 큽니다. 한 세션 에서 글로벌 락을 획득하면 다른 세션에서는 조회를 제외하고 락이 해제 될 때 까지 대기 해야 합니다. 테이블 락 개별 테이블 단위로 설정되는 락입니다. 스키마를 변경하는 DDL의 경우 테이블 락이 설정됩니다 네임드 락 임의의 문자열에 대해 잠금을 설정할 수 있습니다. 여러 서버를 동기화 해..

mysql의 서버는 크게 mysql 엔진과 스토리지 엔진으로 구분할 수 있습니다. mysql 엔진의 역할 사람으로 치면 머리에 해당하는 역할입니다. 쿼리를 파싱하고 쿼리를 최적화 하여 sql을 실행합니다. 스토리지 엔진의 역할 사람으로 치면 손과 발에 해당하는 역할입니다. mysql 엔진이 커넥터를 통해 스토리지 엔진에게 데이터 읽기/쓰기 명령을 보냅니다. 스토리지 엔진은 해당 명령을 수행합니다. 대표적인 스토리지 엔진은 InnoDB가 존재합니다 MySQL의 특징 중에 대표적인 것은 플러그인 모델입니다. 각각의 기능들을 플러그인 형태고 개발해서 사용할 수 있습니다. 따라서 사용자는 기본적인 기능 이외에도 부가적인 기능을 위해서 직접 개발을 할 수 도 있습니다. 대표적으로 스토리지 엔진에서는 InnoDB,..

데이터베이스 인덱스는 데이터베이스 테이블의 데이터를 더 빠르게 검색하고 쿼리하는 데 사용되는 자료구조입니다. 책의 색인과 비슷합니다. 데이터베이스에서 특정 값을 찾고자 할 때, 테이블의 모든 행을 검사하지 않고 해당 값이 있는 행을 빠르게 찾을 수 있게 해줍니다. 인덱스를 사용하면 데이터 검색 속도가 빨라 지지만 테이블에 데이터를 삽입하거나, 업데이트 하는 작업은 더 오래 걸릴 수 있습니다. 왜냐하면 각 삽입이나 업데이트 시 변경에 대해서 인덱스 역시 업데이트를 해야 하기 때문입니다. 따라서, 성능 튜닝에 좋은 도구 이지만, 어떤 열에 인덱스를 생성할지, 어떤 타입의 인덱스를 사용할지 등은 확인후에 결정해야 합니다. 그렇다면 인덱스를 걸기에 효율적인 칼럼은 무엇일까요? 읽기 작업이 쓰기 작업에 비해 많고..