MySQL, MariaDB 96

MySQL/MariaDB ROW Size Limit

MySQL/MariaDB ROW Size Limit · Version : MySQL 5.7 SQL Server에서 사용하던 일부 데이터를 MySQL 서버로 마이그레이션 작업 진행중, 컬럼수가 많은 (또는 컬럼의 길이가 큰 테이블) 테이블이 MySQL에서는 아래와 같은 오류와 함께 테이블이 생성되지 않는 문제가 발생하였다. Error Code: 1118. Row size too large (> 1982). Changing some columns to TEXT or BLOB may help. In current row format, BLOB prefix of 0 bytes is stored inline. 해당 원인을 찾아본 결과, SQL Server의 경우 한 페이지의 크기가 8K로 고정이 되어있고, Row..

MySQL, MariaDB 2019.07.20

MySQL/MariaDB sql_mode 설정 변경으로 NULL 데이터 처리하기

MySQL/MariaDB sql_mode 설정 변경으로 NULL 데이터 처리하기 · Version : MySQL 5.7 MS SQL Server에서 BCP를 이용하여 데이터를 탭 구분형식의 텍스트 파일로 내려받고 MySQL에서는 Bulk load(LOAD DATA INFILE)를 사용하여 데이터를 복원할때 아래와 같은 에러가 지속적으로 발생하였다. Error Code: 1366. Incorrect decimal value … 이 문제는 Decimal 컬럼에 NULL값을 입력할때 MySQL의 유효성 문제로 에러가 발생한 것이다. 해당 컬럼은 NULL 허용 컬럼임에도 불구하고 지속적으로 동일한 문제가 발생하여, 해결 방법을 찾아본 결과 아래와 같은 sql_mode 변경으로 해결할 수 있었다. SET SESS..

MySQL, MariaDB 2019.07.06

MySQL/MariaDB Timezone 설정 및 확인

MySQL/MariaDB Timezone 설정 및 확인 · Version : MySQL 5.7, Docker MySQL/MariaDB를 운영할때, 타임존에 대해서 알아본다. 아래 스크립트는 현재 데이터베이스의 타임존을 확인한다. 타임존이 SYSTEM 으로 표시되면 별도의 타임존 설정이 되어 있지 않다는 뜻이며 시스템의 타임존을 사용하겠다는 뜻이다. SELECT @@GLOBAL.time_zone, @@SESSION.time_zone, @@system_time_zone; 데이터베이스 설정에서 default-time-zone 변경 방법은 my.ini (my.cnf)에서 [mysqld] 영역에 타임존을 추가한다. 아래 스크립트는KST로 타임존을 설정하였으며 스크립트 적용 후MySQL 서비스 재시작이 필요하다. ..

MySQL, MariaDB 2019.06.13

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 Threads 모니터링

MySQL/MariaDB Threads 모니터링 · Version : MySQL 5.7, Docker MySQL/MariaDB에서 Threads 모니터링하는 방법에 대해서 알아본다. MySQL 서버는 기본적으로 하나의 클라이언트가 MySQL 서버에 접속할 떄마다 해당 클라이언트에 종속적인 스레드를 생성하고 해당 커넥션에서의 스레드 역할(쿼리 작업)이 끝나면 스레드를 제거한다. 클라이언트가 접속할 때마다 스레드를 할당하고 제거하는 작업은 MySQL 서버 시스템 입장에서 보면 많은 리소스 낭비 및 성능 저하를 발생시키기 때문에 모니터링은 매우 중요한다. 아래 스크립트를 실행하면 스레드와 관련된 지표를 확인할 수 있다. Show status where variable_name like ‘threads%’; V..

MySQL, MariaDB 2019.03.24

MySQL/MariaDB Temp table and Temp file 모니터링

MySQL/MariaDB Temp table and Temp file 모니터링 · Version : MySQL 5.7, Docker MySQL/MariaDB에서 Temp table 및 Temp file 모니터링하는 방법에 대해서 알아본다. 데이터베이스 서브 시스템에서 상대적으로 느린 부분이 디스크이다. 임시 테이블 및 임시 파일이 디스크에 기록될때 데이터베이스의 성능 저하가 발생할 수 있기기 때문에 지속적인 모니터링을 통해서 디스크에 생성되는 임시 테이블 및 파일이 높지 않은지 살펴보아야 한다. 아래 스크립트는 temp table 및 temp file의 지표를 나타낸다. Show status where variable_name like ‘%tmp %’ Variable Name Commets Created..

MySQL, MariaDB 2019.03.24

MySQL/MariaDB Table lock 모니터링

MySQL/MariaDB Table lock 모니터링 · Version : MySQL 5.7, Docker MySQL/MariaDB에서 Table lock 모니터링하는 방법에 대해서 알아본다. Table lock(테이블락) 모니터링은 테이블에 락이 발생한 횟수를 나탄내다. 아래 명령어를 실행하면 테이블락과 관련된 성능 지표를 보여준다. show status where variable_name like ‘table_locks%’ Variable Name Commets Table_locks_immediate 즉식 획득한 테이블 락 횟수 Table_locks_waited 테이블 락을 즉시 획득하지 못하고 대기한 횟수 MySQL에서 테이블락 관련해서 모니터링 할때 주의해야할 부분이 있다. MySQL의 경우 다양..

MySQL, MariaDB 2019.03.24

MySQL/MariaDB Sort 모니터링

MySQL/MariaDB Sort 모니터링 · Version : MySQL 5.7, Docker MySQL 뿐만 아니라 다른 제품의 RDB에서도 정렬(Sort)이 발생할 때 시스템 리소스가 추가적으로 발생하기 때문에 모니터링이 필요하다. Select 모니터링시 테이블 스캔이 발생하는지 또는 인덱스 를 잘 사용하는지에 대한 부분에 대해서 살펴 보았다면 이번에는 정렬과정에서 발생하는 비용에 대해서 살펴본다. · MySQL/MariaDB Select 모니터링 : http://sqlmvp.kr/221260775725 아래 스크립트를 실행 하면 Sort와 관련된 지표를 확인할 수 있다. show status where variable_name like ‘sort%’ 각 지표가 의미하는 내용은 아래 표를 참고 한다..

MySQL, MariaDB 2019.03.24

MySQL/MariaDB Select 모니터링

MySQL/MariaDB Select 모니터링 · Version : MySQL 5.7, Docker MySQL 뿐만 아니라 대부분의 OLTP 성 데이터베이스에서는 SELECT의 성능이 매우 중요하다. 일반적으로 관계형 데이터베이스에서는 JOIN을 많이 사용하기 때문에 SELECT에 따른 의도하지 않은 성능 문제나 잠금 문제가 발생할 수 있기 때문에 모니터링에 우선순위를 높여야 하며 최우선으로 튜닝을 해야 하는 포인트 이기도 하다. MySQL에서 SELECT에 대한 모니터링은 아래 스크립트를 실행하여 확인할 수 있다. show status where variable_name like ‘select%’ 각 항목에 대해서 어떤 의미를 가지는지 살펴보자. Variable Name Comment Select_fu..

MySQL, MariaDB 2019.03.24