DBA 33

MySQL MMM 구성 (Centos7 + MySQL 8.0)

MySQL MMM 구성 (Centos7 + MySQL 8.0) · Version : MySQL 8.0.XX, Centos 7 MySQL MMM(MySQL Multi-Master) 을 구성하는 방법에 대해서 살펴본다. 이번 포스트에서는 MMM 구성에 대해서만 다루므로 MySQL 설치 및 Master-Slave 구성은 다른 글을 참고할 수 있도록 한다. MMM구성에 관한 글을 찾아보면 대부분 Centos6 기반의 환경에서 설치된 글을 많이 볼 수 있다. 필자의 경우 Centos7 환경에서 구성을 진행하였는데, Centos7 버전에서는 공식 가이드 문서에서 제공하는 코드와 조금 다르게 디렉터리 경로가 바뀐 부분이 있어 처음 설치시 오류가 발생하였다. 디렉터리 PATH에 대한 설정 값을 수정하고 정상 작동확인한..

MySQL, MariaDB 2020.02.01

SQL Server master 데이터베이스 정리

SQL Server master 데이터베이스 정리 · Version : SQL Server SQL Server에서 master 데이터베이스의 역할은 시스템에 대한 모든 정보를 기록한다. 여기에는 로그인 계정, 끝점, 연결된 서버 및 시스템 구성설정과 같은 인스턴스 차원의 메타 데이터가 포함된다. · master database : https://docs.microsoft.com/en-us/sql/relational-databases/databases/master-database?view=sql-server-2017 우리는 가끔 의도하지 않게 master 데이터베이스에 개체를 생성하는 경우가 있다. 대부분 개체를 생성할 때 USE 문을 생략했을 수도 있고 수 많은 작업창을 띄어 놓고 사용하다가 실수할 수도..

인덱스 재구성과 통계 업데이트시 발생하는 SQL Server Block

인덱스 재구성과 통계 업데이트시 발생하는 SQL Server Block · Version : SQL Server SQL Server에서 인덱스 재구성 및 통계 업데이트 작업을 할 때 일반적으로 DML(SELECT, INSERT, UPDATE, DELETE)문은 차단하지 않는 것으로 알고 있다. 하지만 인덱스 재구성할 때 SELECT 문에서 차단이 발생하는 경우가 있다. 아래 실습을 통해서 어떻게 차단이 발생하는지 알아본다. 실습을 진행하기 위해 간단한 시나리오를 만든다. 해당 시나리오는 SQL Server Adventurework2014 데이터베이스를 사용하며 더 큰 데이터 집합을 만들기 위해 아래 링크의 스크립트를 적용하였다. · Enlarging the AdventureWorks Sample Data..

SQL Server 2017에서 향상된 UDF 실행 계획

SQL Server 2017에서 향상된 UDF 실행 계획 · Version : SQL Server 202017 CU3 SQL Server 2017 CU3 이후 부터 UDF(User-Defined Function) 실행계획이 개선되어 사용자에게 좀 더 많은 정보를 보여주게 되었다. (필자가 글 을 쓰는 시점으로 최신 CU7까지 출시 되었다.) 이전에는 쿼리에 참조된 UDF를 사용할 때 쿼리 실행 시간의 상당 부분이 함수 내에서 발생하여도 쿼리 실행계획을 보고 쉽게 파악하기가 어려웠다. SQL Server 2017 CU3 이후 부터는UdfCpuTime과 UdfElaspsedTime의 두 가지 새로운 속성이 추가되어 사용자 정의 함수내에서 사용되는 리소스를 확인할 수 있게 되었다. 아래 스크립트는 테스트를 구..

MySQL/MariaDB InnoDB(Storage) row lock 모니터링

MySQL/MariaDB InnoDB(Storage) row lock 모니터링 · Version : MySQL 5.7, Docker MySQL/MariaDB에서 사용하는 InnoDB 스토리지 엔진에서 row lock 정보는 스토리지 엔진 테이블에서 발생한 행 단위의 lock 발생 횟수와 lock 대기 시간등을 나타낸다. InnoDB row lock 모니터링은 아래 스크립트를 실행하여 확인 할 수 있다. Show status where variable_name like ‘Innodb_row_lock%’; Variable Name Comments Innodb_row_lock_current_waits 현재 row 락을 획득하기 위해 대기중인 수 Innodb_row_lock_time row lock 획득에 소비..

MySQL, MariaDB 2019.03.24

MySQL/MariaDB InnoDB(Storage) buffer pool 모니터링

MySQL/MariaDB InnoDB(Storage) buffer pool 모니터링 · Version : MySQL 5.7, Docker MySQL/MariaDB에서는 다양한 스토리지 엔진을 지원하며 각 스토리지마다 특성 또한 다르다. 각 스토리지 엔진에 대한 특성은 아래 링크를 참고 한다. · Comparison of MySQL database engines : https://en.wikipedia.org/wiki/Comparison_of_MySQL_database_engines 이번 포스트에서는 일반적으로 OLTP 서비스에 많이 사용하는 InnoDB 스토리지 엔진에서 buffer pool(버퍼풀)과 관련한 모니터링 방법에 대해서 알아본다. 아래 스크립트를 실행 하면 InnoDB의 buffer pool..

MySQL, MariaDB 2019.03.24

MySQL/MariaDB Connection 모니터링

MySQL/MariaDB Connection 모니터링 - Version : MySQL 5.7.21, Ubuntu 16.0.4 MySQL 서버에서 connection 모니터링 하는 방법에 대해서 알아본다. MySQL 뿐만 아니라 다른 데이터베이스에서도 connections의 수는 운영과 성능면에서 매우 중요하다. 특히 connection의 개수가 max_connections 값을 초과할 경우 새로운 connection이 할당되지 못하여 어플리케이션이 MySQL 서버에 연결되지 않아 오류가 발생할수 있다. 또한 신규 connection이 할당 될때, 그에 따른 메모리 할당 및 기타 작업이 동반되기 때문에 빈번한 connection 연결 및 해제는 여러가지 성능 문제와도 관련이 있다. MySQL에서 conne..

MySQL, MariaDB 2019.03.24

In-Memory OLTP 사용시 메모리 할당량 초과 오류

In-Memory OLTP 사용시 메모리 할당량 초과 오류 · Version : SQL Server 2014, 2016 SQL Server 에서 In-Memory OLTP를 사용하는 환경에서 아래와 같은 오류가 에러로그에 기록되어 있다면 현재 적용되어 있는 In-Memory 용량을 초과한 것이다. [INFO] HkDatabaseTryAcquireUserMemory(): Database ID: [7]. Out of user memory quota: requested = 131200; available = 74641; quota = 34359738368; operation = 1. 오류 로그에 기록된 내용은 아래와 같다.· requested = 131200 : 요청된 바이트 수· available = 746..

SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계

SQL Server 2016 쿼리 실행에 대한 각 스레드(오퍼레이터) 성능 통계 · Version : SQL Server 2014 SP2, 2016 SQL Server 2016에서 쿼리 성능 문제를 해결할 때 참고 할 수 있는 몇 가지 정보가 추가 되었다. 그 중 대표적인 것이 라이브 쿼리 통계 이다.· SQL Server 2016 라이브 쿼리 통계 : http://sqlmvp.kr/220453033961 하지만 아직도 많은 쿼리 성능 문제를 해결하기 위한 메트릭은 부족한 편이다. 이번에 소개하는 기능은 showplan XML을 활성화하고 쿼리를 실행하였을때 각 스레드(오퍼레이터)에서 실행한 결과를 확인할 수 있는 기능이다. 예를 들어 SQL Server2014까지는 쿼리 실행결과 행결과를 반환하지만 스..

SQL Server DBA 체크리스트

SQL Server DBA 체크리스트· Version : SQL Server SQL Server를 운영할때 DBA role에서 정기적으로 수행하는 작업이 있을 것이다. 관리자마다 중요하게 생각하는 포인트는 다르겠지만 매일, 매주, 매월 일반적으로 점검해야하는 사항들에 대해서 정리해보려고 한다. 이번 포스트에서는 목록만 나열하고 추후 기회가 된다면 체크리스트 표를 만들어서 관리할 수 있는 방안에 대해서도 다루도록 한다. [Daily Check list]· 백업 : 백업 프로세스마다 성공적으로 잘 수행되었는지 확인한다. 백업 단계마다 시간을 확인하여 평소와 다르게 시간이 오래걸렸는지 확인하는 것도 중요하다. (평소와 다르게 오래 걸렸다면 블록커가 있거나 다른 서비스에 영향을 줄 수도 있기 때문이다.) ü S..