일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- DELETE
- autovacuum
- maxclients
- slack
- InnoDB
- NCP
- OD
- RDS
- 6.2.7
- MyISAM
- jmeter
- RDBMS
- DML
- vacuum
- NOSQL
- Cloud DB for MySQL
- postgresql
- cdb
- mysql
- mongo
- opensource
- online ddl
- Docker
- Connection
- 성능테스트
- ncloud
- Maria
- zabbix
- percona
- REDIS
- Today
- Total
목록MySQL & Maria (54)
개인 공부
운영 중인 서비스에서 로깅성 데이터를 저장하는 테이블이 있는 경우, 일정 시간이 지나면 해당 데이터가 필요 없어지는 상황이 종종 발생합니다.하지만 수억 건 이상의 데이터를 단순히 DELETE로 삭제하려고 하면 엄청난 리소스 소모와 장시간 락으로 인해 서비스에 큰 영향을 줄 수 있습니다.오늘은 이러한 문제를 해결하기 위해 Percona Toolkit의 pt-online-schema-change(이하 pt-osc)를 활용해 특정 조건의 데이터만 이관하고,디스크 공간도 회수하는 방법을 소개하려고 합니다. 사용처로깅성 테이블에서 특정 기간이 지난 데이터가 더 이상 필요하지 않을 때기존 데이터가 많아지면서 실행 계획이 바뀌고 성능 저하가 발생하는 경우서비스에 영향을 최소화하면서 대규모 데이터를 정리하고 싶은 경우..
MySQL에서 Bulk Insert(Load Data Infile, Insert into Select~ )을 사용해 대량으로 데이터를 삽입할 때, 종종 테이블의 AUTO_INCREMENT 값이 실제 삽입된 데이터보다 훨씬 커지는 현상이 발생합니다. 이는 의도된 동작이며, MySQL의 AUTO_INCREMENT 동작 방식과 관련이 있습니다. 문제 상황 예시테이블에 auto_increment 컬럼이 존재 할때 Bulk Insert를 통해 데이터를 인서트할 경우 발생하게 된다. 원인: innodb_autoinc_lock_mode 설정MySQL에서 AUTO_INCREMENT 값의 증가 방식은 innodb_autoinc_lock_mode 설정에 따라 다르게 동작합니다.mode는 총 3개로 나뉘어져 있다.0 (tr..
MySQL에서 슬로우 쿼리를 모니터링 하다 보면 해당 쿼리가 임시 테이블이나, 소팅, 스캔 등을 어떻게 했는지 확인이 필요할떄가 있다. Ex) DB 서버에서 sorting 작업이 많이 발생하는게 모니터링 되었는데 어떤 쿼리에서 발생하는지 알고 싶을때 Performance_schema를 통해서도 어느정도 가능하지만 Performance_schema의 경우 DB 시작 부터 현재까지 쌓이는 값이기 떄문에 특정 시점에 많이 발생한 쿼리를 발견하기는 쉽지 않다. Log_slow_extra? 기본적인 슬로우 쿼리 정보 ( Duration / Lock time / Rows sent 등 ) 이외에 해당 쿼리에 대한 상태 정보들을 확인할수 있게 해준다. ( 임시 테이블 생성 / 정렬 작업 / 풀스캔 작업 등.. ) D..

가끔 대용량 작업을 LIMIT 처리 없이 작업을 하다가 이슈가 발생하게 되었을 때 해당 SESSION을 KILL 하는 경우들이 발생한다. 이때 DML 작업 시간이 길었던 만큼 ROLLBACK 작업이 길어지는데 이때 해당 테이블에 DML, DDL작업이 불가능하게 되며 이로 인해 서비스 문제가 발생하게 되는 경우가 있다. ROLLBACK 시간을 산정하여 이슈에 어떻게 대처할지를 선택 해야 한다. EX) ROLLBACK을 기다릴지, 새로운 장비를 사용할지 등등 이번엔 Rollback이 완료 되는데 얼마큼의 시간이 걸리는지 확인하는 방법에 대해 작성해 보려 한다. DMLRollback 데이터를 쌓기 위해서 적당히 큰 테이블에 전체 UPDATE 수행[test]> update lee_test set reason=..
음.. 이번에는 쿼리를 짤때 자주 사용되는 AND / OR 논리 연산에 대한 우선 순위에 대해 작성해보려고 합니다. 많은 분들이 잘 알고 계시겠지만 이 우선순위에 의해서 원하는 결과 값이 아닌 다른 값이 나올수 있다는 점!!! AND / OR ? AND: 두 조건이 모두 참인 레코드를 검색 OR : 두 조건중 하나라도 참인 레코드 예제 쿼리를 통해 AND / OR 연산자의 우선 순위를 보겠습니다. 1. 2페이지에 해당하는 데이터중 Title에 'Test'가 포함된 데이터 select * from ( select rownum rn, bro, title, wirter from board where title like '%Test%' and rownum 10; 2. tit..

오늘은 MySQL MyISAM 엔진의 테이블들을 InnoDB 엔진의 테이블로 변경하는 내용에 대해서 포스팅할 예정입니다. MySQL Dev에 작성된 지침들을 확인해 보면서 진행하도록 하겠습니다. https://dev.mysql.com/doc/refman/8.0/en/converting-tables-to-innodb.html MySQL :: MySQL 8.0 Reference Manual :: 15.6.1.5 Converting Tables from MyISAM to InnoDB 15.6.1.5 Converting Tables from MyISAM to InnoDB If you have MyISAM tables that you want to convert to InnoDB for better reliabi..
모니터링 스크립트 TOP을 이용해서 MySQL의 Top10 Thread_OS_ID 확인 Thread_OS_ID를 이용하여 MySQL Query 수행 Thread_OS_ID, Processlist_ID, Query 출력 실행 시 password 변수 변경하여 사용 [root@db-test1 ~]# cat lee.sh #!/bin/bash password='wl@2020Toaxj' ### Search Top10 MySQL Thread_OS_ID lee=`top -b -n 1 -H -p \`ps -ef | grep mysqld | grep -v "mysqld_safe" | grep -v "grep" | awk '{print $2}'\` | grep -v "Threads\|top\|KiB\|%Cpu(s)\|PI..
MySQL 5.7 이후부는 Online DDL을 지원하게 되었습니다. Online DDL시 장애를 줄이기 위해서 알아두면 좋은 환경설정에 대해 포스트팅 해보도록 하겠습니다. ■ Online DDL시 아래 작업들이 발생하게 됩니다. - online ddl시 row log buffer에 DDL이후의 데이터 변경사항을 저장하게 된다. - row log buffer는 sort_buffer_size 시스템 변수에 정의된 크기만큼씩 할당하며, 최대 innodb_online_alter_log_max_size 만큼 증가하게 된다. - innodb_online_alter_log_max_size ⇒ ONLINE DDL 중 DML문을 적재하는 Size 이다. 대부분 ONLINE DDL 중 해당 파라미터를 1G로 설정하고 진..