본문 바로가기
728x90

전체 글177

MySQL 내부 동작(스필) 이란? 필자는 MySQL 설정을 보던 중 tmp_table_size, max_heap_table_size, temptable_max_ram 같은 임시테이블 설정들이값을 초과하게 되면 어떤일이 발생할까? 에 대한 궁금한점을 조사하게된 결과를 글을 쓰고자한다. 우선 필자는 azure에서의 mysql db를 빌려 사용중 이였다. 1. MySQL의 임시테이블임시테이블이 만들어지는 경우: 정렬, 그룹핑, DISTINCT, UNION, 서브쿼리 등두 가지 임시테이블 구분사용자 생성 MEMORY 테이블쿼리 실행 중 내부적으로 생성되는 임시테이블2. 설정값과 한계tmp_table_size / max_heap_table_size → 사용자 MEMORY 테이블의 최대 크기두 값 중 작은 값이 상한초과 시: 디스크로 스필 ❌, 그.. 2025. 9. 11.
저장 프로시저(Stored Procedure) 무엇인가?? 1) 저장 프로시저란?여러 SQL을 하나의 이름 있는 블록으로 DB 내부에 저장해 두고 CALL로 실행하는 프로그램 단위.“특정 로직의 쿼리를 함수처럼” 재사용한다는 점이 포인트.프로시저 vs 함수프로시저: 일련의 작업 절차. 리턴값이 없거나 여러 개일 수 있음(OUT/INOUT). 서버에서 실행되는 전형적인 저장형 코드.함수: 반드시 하나의 반환값을 돌려주며, 보통 SQL 문맥에서 값처럼 사용. 2) 일반 쿼리와 차이일반 쿼리는 매번 구문 분석 → 개체 확인 → 권한 확인 → 최적화 → 실행계획 캐시 등록 → 실행 과정을 거침.프로시저는 정의 시점과 실행 시점이 나뉘고, 지연된 이름 확인으로 정의 시점에 대상 테이블이 없어도 생성이 가능(실행 시 존재여부를 검사). 처음 실행 때는 일반 쿼리와 유사한.. 2025. 8. 30.
DB Lock을 활용한 동시성 제어방법 🔒 Lock이란? (DB 관점)1. 정의데이터베이스에서 Lock(락) 은 트랜잭션들이 동시에 같은 데이터에 접근할 때 충돌을 막고 일관성을 보장하기 위한 동시성 제어 메커니즘입니다.DBMS는 여러 사용자가 동시에 쿼리를 실행하더라도 데이터 무결성(Integrity)과 일관성(Consistency)을 유지해야 합니다. Lock은 이를 위해 트랜잭션 단위에서 자원 접근 순서를 조율하는 역할을 합니다. 2. Lock이 필요한 이유만약 Lock이 없다면 여러 트랜잭션이 동시에 같은 데이터를 수정할 수 있어 데이터 불일치(Inconsistency) 문제가 생깁니다. 대표적인 문제는 다음과 같습니다:Lost Update (갱신 손실)두 트랜잭션이 같은 데이터를 읽고 각각 갱신하면, 나중에 실행된 값이 먼저 실행.. 2025. 8. 30.
실제DB → 테스트DB 마이그레이션 시간 단축 하기 안녕하세요. 오늘은 예전에 실제로 운영 되는 실제 DB 데이터를 테스트 DB로 데이터를 옮기는 과정중HeidiSQL 같은 GUI 툴로 데이터를 옮기곤 했었습니다.데이터가 많아지다 보니, 시간이 매우 오래 걸리는 상황이 발생하여서시간을 획기적으로 단축할 방법을 찾기 위해 사용한 사례에 대해 글을 쓰고자 합니다. 📍 문제 상황예전에는 DB 마이그레이션을 할 때 DBeaver, HeidiSQL 같은 GUI 툴로 데이터 덤프 후 복원 작업을 진행했습니다.데이터 용량이 크다 보니데이터 이동 및 복원까지 총 20분 이상 걸리는 경우가 많았음네트워크 속도와 디스크 I/O 병목이 심함 🔍 원인 분석 백업 데이터 처리 방식의 차이GUI 툴은 대부분 쿼리 실행 → 응답 → 파일 저장을 반복하는 구조덤프 전체를 한 번에.. 2025. 8. 13.
메모리 기반 Temporary Table(임시테이블)을 활용한 데이터 정확성 + 속도 개선 트러블슈팅 안녕하세요. 오늘은 바빠서 미루었던 트러블 슈팅 했던 경험을 쓰고자 합니다.대규모 계약 통계(지점별) 데이터를 집계하는 과정에서,데이터 정확성과 조회 속도라는 두 가지 과제를 동시에 해결해야 했던 경험이 있습니다. 1. 문제 상황쿼리 복잡성모든 항목(상담 내역, 계약 건수, 계약 비율, 결제 금액 등)을 단일 쿼리로 처리하려다 보니,JOIN과 서브쿼리가 중첩되어 실행 계획이 복잡해지고 성능이 저하됨.데이터 정확성 저하 가능성서로 다른 집계 로직이 얽히면서 일부 항목의 값이 왜곡될 가능성 존재.대용량 데이터 속도 문제매 요청 시마다 전체 데이터를 풀 스캔 → 결과 응답 시간이 길어짐. 2. 해결 전략A. 메모리 기반 임시테이블 설계MySQL MEMORY 엔진 기반의 임시테이블을 사용해 디스크 I/O를 최.. 2025. 8. 12.
MYSQL 엔진 성능 최적화 쿼리 최적화를 시도하는 동안, WHERE 절 조건을 아무리 줄여도 2.4초라는 속도가 변하지 않았습니다. 최적화 방법을 지속적으로 검색하던 중, MySQL 엔진의 성능 자체가 낮은 설정이 최적화에 영향을 줄 수 있다는 생각이 들었습니다. 이에 관련된 성능 최적화가 잘 정리된 글을 참고하여 설정을 조정한 결과, 최적화가 성공적으로 이루어졌습니다. 정리된글을 언제든 볼수 있도록 포스팅 하고 싶어 그대로 복사 하였다.MySql  성능 최적화 방안 (옵션 설정값 설명 포함) 1. 기본 설정 Basic Settings에서 생각해 볼 것은 tmpdir을 어디에 둘 것인지 여부입니다.기본으로는 하드디스크인 /tmp에 설정되어 있습니다.여러 번 시행 착오 끝에 리눅스 tmpfs 파일시스템은 일부 임시 파일생성을 허용하.. 2024. 7. 28.
728x90