본문 바로가기
반응형

Database32

1. 커버링 인덱스 (기본 지식 / WHERE / GROUP BY) 일반적으로 인덱스를 설계한다고하면 WHERE절에 대한 인덱스 설계를 이야기하지만 사실 WHERE뿐만 아니라 쿼리 전체에 대해 인덱스 설계가 필요합니다. 인덱스의 전반적인 내용은 이전 포스팅을 참고하시면 좋습니다. 인덱스는 데이터를 효율적으로 찾는 방법이지만, MySQL의 경우 인덱스안에 포함된 데이터를 사용할 수 있으므로 이를 잘 활용한다면 실제 데이터까지 접근할 필요가 전혀 없습니다. 이처럼 쿼리를 충족시키는 데 필요한 모든 데이터를 갖고 있는 인덱스를 커버링 인덱스 (Covering Index 혹은 Covered Index) 라고합니다. 좀 더 쉽게 말씀드리면 SELECT, WHERE, ORDER BY, GROUP BY 등에 사용되는 모든 컬럼이 인덱스의 구성요소인 경우를 얘기합니다. 1-1. 커버링.. 2020. 2. 16.
MySQL (MariaDB) 인덱스 컨디션 푸시다운 팀에서 운영중이던 시스템에서 전반적인 성능 개선작업을 진행중 특정 쿼리의 실행 계획에서 Using index condition 값을 Extra 항목에서 보게 되었습니다. 커버링 인덱스 (Using index) 와는 어떤점이 다른지 정리하던 중, 인덱스 컨디션 푸시 다운 (ICP: Index Condition Pushdown)에 대해 알게되어서 정리하게 되었습니다. 커버링 인덱스도 정리중입니다. 혹시 정리되기전에 알고싶으신분들은 성동찬님이 작성하신 글을 참고해보세요. MariaDB 5.3 이상 혹은 MySQL 5.6 버전 이상부터 도입된 인덱스 컨디션 푸시 다운에 대해 간단하게 테스트로 확인해보겠습니다. 최근에 MariaDB를 설치하신 분들은 다 10.x 버전을 쓰실거라 기본으로 해당 옵션이 ON되어있을겁.. 2020. 2. 9.
Xtrabackup으로 DB 복구하기 Xtrabackup으로 백업된 데이터를 DB에 복구 시키는 과정을 진행해보겠습니다. 이 과정은 2대의 DB 서버가 있다는 가정하에 진행합니다. 1번 DB는 실제 운영 DB이며, 매일매일 Xtrabackup으로 백업 파일을 생성합니다. 2번 DB는 운영 DB가 장애나서 급하게 공수한 서버이며, MariaDB만 설치된 상태입니다. 즉, 깡통 상태입니다. 깡통 서버에서 MariaDB를 설치하는 방법은 이전 포스팅을 참고해주세요. 아래부터 실행되는 모든 명령은 root 계정으로 실행합니다. 즉, ec2-user, centos 등의 계정에서 root 계정으로 전환합니다. sudo su - root 그럼 차례로 진행해보겠습니다. 1. 백업 파일 다운로드 먼저 백업 파일을 저장할 백업 디렉토리로 이동합니다. 저는 /.. 2019. 12. 28.
MariaDB 설치 및 설정 AWS 를 쓸 수 있다면 Aurora가 정답이지만, IDC를 쓰고 있다면 MariaDB 혹은 MySQL을 직접 설치해서 사용할 필요가 있습니다. 여기선 IDC 환경에서 MariaDB 운영을 위해 필요한 기본 설정들과 설치를 진행해보겠습니다. 1. OS 설정 저 같은 경우 별도로 IDC 장비를 사용하지 못하여 AWS EC2에 직접 설치하며 사용할 예정입니다. Centos 6을 쓰신다면 거의 비슷한 명령어로 수행할 수 있습니다. 1-1. ulimit 수정 다음으로 ulimit 설정을 합니다. ulimit에 대한 자세한 내용은 예전에 작성한 글을 참고해보세요. 아래 파일을 열어 확인해봅니다. vim /etc/security/limits.conf 아래와 같이 전체 사용자의 nofile 옵션을 추가합니다. * s.. 2019. 11. 17.
MariaDB ERROR 1524 Plugin is Not Loaded 문제 해결 MariaDB를 설치하던 중에 root 계정의 비밀번호 설정을 잘못할 때가 있습니다. 그럼 아래와 같이 접속 시도시마다 에러가 발생합니다. ERROR 1524 (HY000): Plugin '잘못된 플러그인' is not loaded 이 문제를 해결해보겠습니다. 1. 해결 서버에 접속해 root 계정으로 전환합니다. sudo su - root 이제 실행하는 모든 명령어는 sudo가 생략되었다고 생각하시면 됩니다. 정상적인 MariaDB 실행으로는 위와 같이 플러그인 에러가 계속 발생합니다. 그래서 이럴때를 대비해 mysqld_safe (일종의 윈도우에서 안전모드 같은 거라 생각하시면 됩니다.)를 사용합니다. 아래 명령어로 실행해봅니다. mysqld_safe --skip-grant-tables & enter.. 2019. 11. 17.
[mysql] Failed to read auto-increment value from storage engine 해결 방법 Mysql을 운영하다보면 아래와 같은 에러 메세지를 발견할 때가 있습니다. Caused by: java.sql.SQLException: Failed to read auto-increment value from storage engine 이는 Mysql 테이블의 상태값 중 auto-increment 에 문제가 발생했기 때문입니다. 문제에 대한 확인은 아래 쿼리로 확인합니다. show table status like '테이블명' 그럼 아래와 같이 Auto_increment필드가 이상함을 알수 있습니다.실제로 이 테이블의 Auto_increment 최신값은 60이기 때문이죠.그래서 새로 생성되어야할 값은 61인데, 실제 Status 테이블에는 0으로 되어있으니 오류가 발생하게 됩니다. 해결책은 간단합니다. 강.. 2019. 5. 14.

728x90
반응형