Mysql 18

[MySQL] SELECT INSERT 쿼리 에서 DEADLOCK 발생

최근에 로그를 살펴보다가 발견한 Deadlock SQL로그. SQLSTATE[40001]: Serialization failure: 1213 Deadlock found when trying to get lock; try restarting transaction at ... 가장 최근의 deadlock 히스토리를 살펴본다. (가장 최근 히스토리만 저장되고 이전 내역들은 저장되지 않는다) SHOW ENGINE INNODB STATUS ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2023-02-22 11:37:50 0x7fe8106ae700 *** (1) TRANSACTION: TRANSACTION 107458378, A..

Mysql 2023.02.22

[DB] 대용량 DB 무중단 배포 툴

대용량 데이터를 보유중인 테이블의 스키마 변경이 필요할 때 무중단, non-blocking 상태로 테이블 변경을 할 수 있게 도와주는 툴. pt-online-schema-change https://jojoldu.tistory.com/358 [mysql] Percona pt-online-schema-change 설치 및 사용하기 Mysql에서 몇억건 이상의 대량의 데이터를 갖고 있는 테이블을 수정 하는것은 쉬운일이 아닙니다. 단순히 alter table 을 해버리면 4시간, 5시간 이상 수행되기 떄문인데요. 이를 해결 하기 위해 create jojoldu.tistory.com

Mysql 2022.05.31

[Mysql/MariaDB] Slow Query Log 세팅

SET GLOBAL slow_query_log = ON; SET GLOBAL slow_query_log_file = 'C:/home/storage/logs/mariadb-slow.log'; SET GLOBAL long_query_time = 1; SET GLOBAL log_output = 'FILE'; 아래 3가지 확인 show global variables like '%slow%'; show global variables like '%long%'; show global variables like '%log_output%'; slow_query_log = 'ON' 으로 변경해야 함 slow_query_log_file = 로그파일 저장될 경로 long_query_tiem = 쿼리실행 시간이 10초 이상일때..

Mysql 2021.12.07

[MariaDB] mysql 환경변수 설정하기 for Windows

윈도우에서 mysql 환경변수 설정하기 1. 시작->'고급'검색 후 '고급 시스템 설정 보기' 클릭 2. 환경변수 버튼 클릭 3. 시스템 변수 부분에서 'Path' 를 선택 후 '편집' 클릭 4. 새로 만들기 클릭 5. 자신의 mysql 또는 mariadb의 설치경로/bin 을 입력 후 확인 예) C:\Program Files\MariaDB 10.6\bin 6. cmd 진입 후 mysql -V C:\Users>mysql -V mysql Ver 15.1 Distrib 10.6.4-MariaDB, for Win64

Mysql 2021.11.24

[MariaDB] 300만건 대용량 테스트 데이터 만들기

1. github 에서 대용량 데이터 다운로드 받기 https://github.com/datacharmer/test_db GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, used to test your applications and database A sample MySQL database with an integrated test suite, used to test your applications and database servers - GitHub - datacharmer/test_db: A sample MySQL database with an integrated test suite, use... ..

Mysql 2021.11.12

[MySQL] EXPLAIN 실행 계획 사용 방법

DB 튜닝이나 쿼리 최적화를 위해서 가장 먼저 해야 하는 것이 실행계획을 살펴보는 것이다. EXPLAIN SELECT * FROM dummy_test WHERE id=3 AND email = 'QS3aYM5YqB@gmail.com' 사용 방법은 EXPLAIN 을 쿼리 앞에 붙여주면 된다. 결과 : 인덱스를 생성해서 확인해보자 ALTER TABLE dummy_test ADD INDEX test_idx_id_email(id, email) 인덱스 삭제 방법 ALTER TABLE dummy_Test DROP INDEX test_idx_id_email 인덱스가 잘 생성되었는지 확인 SHOW INDEX FROM dummy_test 위 처럼 잘 생성 되었다. 이제 EXPLAIN을 사용하여 인덱스를 타는지 확인 해보자..

Mysql 2021.11.11

[DB] Index 의 사용

index의 사용을 고려해야 할 때 1. 테이블의 규모가 작지 않을 때 2. insert, update, delete 작업이 자주 일어나지 않는 경우 3. where, join, order by 에 자주 사용되는 컬럼 4. 데이터의 중복도가 낮은 컬럼(카디널리티가 높은 컬럼) 5. 검색결과가 전체 데이터의 10% 미만일 때 index 사용 시 주의사항 1. index는 무분별하게 많이 사용한다고 좋은 것이 아님 2. 꼭 필요할 때만 사용 3. 사용하지 않는 index는 꼭 삭제한다. 결합 인덱스(여러 컬럼으로 index 구성) 1. 데이터의 중복도가 낮은(유니크에 가까운) 컬럼을 우선적으로 구성 2. select 시 index를 태우려면 첫번째 index 조건은 where절에 꼭 포함되어야 한다. (첫번..

Mysql 2021.11.10

[MySQL] 텀블러의 MySQL 대용량 데이터 관리 전략

https://gywn.net/2012/05/how_to_shard_big_data_in_tumblr/ Tumblr에서는 MySQL로 어떻게 대용량 데이터를 관리하였을까? | gywndi's database Overview “트위터의 새로운 분산 관리 라이브러리 Gizzard를 소개합니다.“를 알아보던 당시 부사수 “임창선”님과 진행했던 또 다른 해외 사례 “Tumblr”를 정리해보았습니다. Tumblr는 국내에서는 gywn.net 좋은글 펌.

Mysql 2021.06.22
반응형