■ MySQL 격리 수준(from Real MySQL 8.0) 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것 크게 "READ UNCOMMITTED" "READ COMMITTED" "REPEATABLE READ" " SERIALIZABLE"로 나뉜다. 하지만 일반적인 데이터베이스에서 READ UNCOMMITTED는 거의 사용하지 않고, SERIALIZABLE또한 동시성이 중요한 데이터베이스에서는 거의 사용되지 않는다. 격리 수준이 높아질수록 성능 개선이나 저하는 발생하지 않는다. ※ 일반적인 온라인 서브스 용도에서는 READ COMMITTED와 REPEATABLE READ 중 하나를 사용합니다. READ UNCOMM..
테이블 손상이 발생할 수 있는 경우 1. InnoDB 테이블이 손상되는 경우는 상당히 희박 - Double write, Checksum 그리고 기타 Validation 로직들과 버그 보완으로 인해서, 실제로 MyISAM에 비해서 InnoDB 테이블 스페이스 및 데이터 파일은 상당히 안정적이다. 2. 대부분의 손상은 인덱스에서 발생 - 많은 사람들이 경험하는 InnoDB 데이터 파일의 손상은 80~90% 정도가 InnoDB 인덱스 (Secondary index)에 발생한 손상인 경우이며, 이 경우에는 단순히 ALTER TABLE 또는 데이터 덤프 및 재 적재만으로 해결된다. 복구 모드 "1 ( SRV_FORCE_IGNORE_CORRUPT )" 참조. 3. 이외 - InnoDB 테이블의 문제점들의 경우는 덤..
안녕하세요 DB백업 데일리 성공 여부를 받아볼 수 있는 간단한 이메일 스크립트 설정을 해보았습니다. 아래 스크립트를 기반으로 데일리로 받아보고자 하는 정보를 조금씩 수정하여 사용하면 될거 같습니다~ 사전 설정 send mail을 사용하여 구글 메일로 발송 할 계획이라 sendmail 설치가 되어있어야합니다. ■ sendmail 설치 [root@mysql]# yum install -y sendmail sendmail-cf ■ config 수정 [root@mysql]# vi /etc/mail/sendmail.mc -- 52,53라인에 dnl을 삭제 [root@mysql bin]# m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf ■ 25번 포트 open 확인 [root@..
메모리 부족 이슈 발생시 볼만하다는 소리를 듣고 찾아보게 되었습니다. temporary tablespace는 사용자가 임의적으로 create ~문 등을 사용해 임시 테이블을 생성할 때 undo 로그가 저장된다고 합니다. ■ Temp tablespace ibtmp1 : global temporary tablespace 공간은 사용자가 생성한 임시 테이블의 롤백 세그먼트를 저장합니다. innodb_temp_tablespace_dir : SESSION LEVEL로 ON-DISK 내부 임시테이블이 생성되는 공간 [사용자가 만든 임시 테이블 & 옵티마이저가 사용하는 임시 테이블 ] MariaDB [(none)]> show variables like '%temp%'; +-------------------------..
■ QPS ( Query Per Seconds ) 초당 Query량 즉, MySQL Server가 초당 실행하는 Query 총량을 말합니다. 조회량 /초 는 한서버가 1초에 해당하는 조회 횟수로 특정한 조회 서버가 규정된 시간 내에 처리하는 조회량이 얼마인지에 대한 평가 기준입니다. ※ 계산 방법 Questions = SHOW GLOBAL STATUS LIKE 'Questions'; Uptime = SHOW GLOBAL STATUS LIKE 'Uptime'; QPS=Questions/Uptime MariaDB [(none)]> SHOW GLOBAL STATUS LIKE 'Questions'; +---------------+------------+ | Variable_name | Value | +-----..
Character Set이란, 캐릭터 셋을 명시적으로 설정하지 않으면 MySQL 5.7 이하는 latin1, MySQL 8은 utf8mb4 가 된다. 현재 character set 확인은 다음과 같이 mysql 클라이언트로 연결한 후에 status 명령어로 알수 있다. 문자의 집합으로 즉, 텍스트 데이터에 대한 저장공간의 크기를 지정하기 위함이다. 대표적으로는 utf8, euckr 그리고 utf8mb4가 있다. Collation이란, 정렬방식으로 저장된 텍스트 데이터를 정렬할 경우 어떻게 비교하여 정렬할 것인가에 대해 지정하기 위함이다. "ORDER BY 'text' ASC"에 대해 데이터로 a, b, A, B가 있을 경우 어떤 방식으로 비교하여 정렬을 할 것인가를 지정하는 것이다. 주로 많이 사용되는 ..
파라미터 설명 Docs URL https://dev.mysql.com/doc/refman/8.0/en/server-option-variable-reference.html MySQL :: MySQL 8.0 Reference Manual :: 5.1.4 Server Option, System Variable, and Status Variable Reference MySQL 8.0 Reference Manual / ... / MySQL Server Administration / The MySQL Server / Server Option, System Variable, and Status Variable Reference 5.1.4 Server Option, System Variable, and Status V..
innodb_flush_log_at_trx_commit 파라미터는 Transaction이 Commit되었을때 디스크에 저장되는 방법을 지정하는 변수이다. 해당 파라미터에 따라 성능을 차이가 날 수 있으므로 잘 고려해야합니다. * innodb_flush_log_at_trx_commit = 0 -MySQL 서버에 문제가 생기면 마지막 1초의 Transaction 유실 발생 * innodb_flush_log_at_trx_commit = 1 - Default 값으로 데이터 유실 발생하지 않는다. * innodb_flush_log_at_trx_commit =2 - OS가 crash되거나 파워가 나가면 마지막 1초(혹은 그 이상..)의 트랜잭션이 유실될 수 있습니다. nnodb_flush_log_at_trx_com..