DB6 윈도우함수(Window Function)로 중복 닉네임 처리하기 서론 (들어가기 앞서)기획자님 : 상용 DB에 중복 닉네임이 존재합니다. 중복된 닉네임을 뒤에 가입한 순서대로 숫자 001, 002, 003 등으로 붙여주세요.얼마 전, 회사에서 중복 닉네임을 일괄 변경하는 작업에 대한 요청이 있었습니다. 이미 기존에 중복된 닉네임에 가입 순서를 기준으로 001, 002, 003 뒤에 숫자를 붙여서 수정하는 것이 요구사항이었습니다. 물론 실제로는 이것보다 친절하고 자세하게 설명해주셨죠. 순간 고민이 됐습니다. 쿼리로 한 번에 처리할 순 없을까? 🤔 찾아 보니, 윈도우 함수 내 순위함수 기능을 사용하면 쉽게 값을 정해줄 수 있었습니다 🥹 그래서 이번 시간에는 윈도우함수의 순위함수를 사용하여, 위 요구사항에 만족하는 쿼리를 작성하는 방법에 대해 함께 알아보도록 하겠습니다.. DB 2024. 9. 27. [MySQL] 쿼리 튜닝을 위한 인덱스 활용의 모든 것 오늘은 백엔드 API 성능 개선을 위해 핵심적인 요소 중 하나인 인덱스를 통한 쿼리 튜닝 방법에 대하여, 학습한 내용들을 정리해보겠습니다. 먼저 기본적인 내용부터 다뤄보겠습니다.인덱스인덱스의 정의여러분은 색인에 대해 들어보셨나요? 색인(index)이란 책이나 학술서, 연구 재료가 될 서적의 내용 중에서 중요한 항목, 술어, 인명, 지명 등을 뽑아 본문 어느 쪽에 있는지 쉽게 찾아볼 수 있도록 쪽 번호와 함께 별도로 배열하여 놓은 목록입니다.인덱스란 마치 책의 색인(index)처럼, 데이터를 빠르게 찾기 위해 데이터가 위치한 위치를 나열한 별도의 데이터 구조입니다. 보통 데이터베이스 테이블의 특정 열(Column)에 대한 검색 속도를 향상시키기 위해 사용하죠.인덱스의 종류이러한 인덱스에도 여러 종류가 있습.. DB/MySQL 2024. 7. 4. [MySQL] Online DDL 활용 방법 문제상황MySQL에서 90만 건이 넘는 데이터가 적재된 테이블에 칼럼을 추가하려고 했다. 보통 데이터가 많지 않으면 1초 이내로 완료된다. 그런데, 데이터 양이 많아서 DDL 반영까지 10분 가량 시간이 소요됐다. 문제는 그 동안, 테이블에 락이 걸려, 테이블에 대한 쓰기 작업이 일시적으로 중단되는 현상이 발생됐다.락이 걸리는 이유락이 걸리는 이유는 뭘까? 데이터 일관성을 보장하기 위함이다. 테이블의 스키마를 변경하는 작업은 데이터베이스의 구조를 수정하는 것으로, 이 과정에서 테이블에 대한 읽기 및 쓰기 작업을 일시적으로 중지하여 데이터 일관성을 유지한다.스키마 변경 작업이 완료될 때까지 다른 작업들이 해당 테이블에 접근하지 못하도록 하는 것이다. 이는 동시성 문제를 방지하고 데이터베이스의 일관성을 보장.. DB/MySQL 2024. 5. 6. [MySQL] MySQL 아키텍처 MySQL 아키텍처 구성 MySQL 접속 클라이언트 역할 대부분의 프로그래밍 언어에 대한 접속 클라이언트 제공 Shell을 통해서도 접속 가능함 MySQL Engine (MySQL의 두뇌) 구성 옵티마이저 요청된 SQL 문을 최적화해서 실행시키기 위해, 실행 계획을 짜는 역할을 함. 쿼리 파서 전처리기 실행 엔진 역할 클라이언트 접속과 SQL 요청을 처리함. MySQL 스토리지 엔진 (MySQL의 손발) 역할 데이터를 실제로 디스크에 저장하거나 디스크에 저장된 데이터를 불러오는 역할 옵티마이저가 작성한 실행 계획에 따라서 스토리지 엔진을 적절히 호출해서 쿼리를 실행 MySQL 엔진이 스토리지를 호출할 때, 사용하는 API를 핸들러 API라고 함 직접 구현하여 추가 가능 운영체제 파일시스템, 하드웨어 쿼리.. DB/MySQL 2024. 1. 30. [MySQL] MVCC(Multi Version Concurrency Control)란 학습해야 하는 이유 MVCC를 이해해야 트랜잭션 격리 수준에 따른 MySQL 내부 동작 원리에 대해서 알 수 있기 때문입니다. MVCC를 이해하기 위해선, Undo Log에 대해 알아야 합니다. 또 Undo Log와 헷갈릴 수 있는 Redo Log에 대해서도 알아봅시다. Redo Log와 Undo Log는 MySQL 스토리지 엔진 내에 존재하는 데이터 영역입니다. Redo Log 정의 DDL 또는 DML 문장에 의해 데이터베이스에 저장된 값 또는 테이더베이스 구조에 변경사항이 생기는 경우 변경 정보를 보관하는 메모리 영역입니다. Redo Log가 필요한 이유 기본적으로 DB에서 데이터 변경 작업은 부하가 큰 작업입니다. 많은 경우 변경 대상인 데이터가 순차적으로 위치하지 않고 디스크에 랜덤하게 존재하기 .. DB/MySQL 2023. 10. 28. [DB] 트랜잭션이란 무엇인가? 서론 오늘은 트랜잭션에 대해서 알아보도록 하겠습니다. 본론 트랜잭션이란? 데이터베이스(이하 DB)에서 더 이상 나눌 수 없는 최소의 실행 단위를 말합니다. 또 DB는 하나의 트랜잭션을 수행할 때 온전히 그 명령이 실행되는 것 보장하며, 실행 도중 오류가 발생하면 해당 쿼리를 실행하기 이전 상태로 되돌림으로써 데이터의 일관성을 보장합니다. 트랜잭션의 실행과정 DB에서는 명령이 끝날 때까지 수행 내역을 로그에 보관합니다. DB에서 반영된 내용을 재반영하기 위한 Redo Log와 수행에 실패해 이전의 상태로 되돌리는 Undo Log를 이용해, 트랜잭션이 수행될 수 있도록 합니다. 트랜잭션의 성질 원자성 (Atomicity) 트랜잭션은 DB 작업의 논리적인 작업 단위로, 트랜잭션은 DB에 모두 반영되거나 아니면.. DB/MySQL 2022. 6. 23. 이전 1 다음 반응형