MySQL DB 에 한글 저장시 깨짐현상이 발생하여 트러블슈팅한 과정을 적어보고자 한다.MySQL Character Set 불일치 문제 해결하기1. 문제 상황# 현상- 한글 데이터 저장 시 깨짐 발생 (예: "안녕하세요" -> "안ë..."")- 저장된 한글 데이터 조회 시 깨짐- 개발 환경에서는 정상 동작하나 운영 환경에서 문제 발생# 증상 확인 방법- 데이터베이스에서 직접 조회했을 때의 데이터 상태- 애플리케이션에서 조회했을 때의 데이터 상태2. 원인 분석-- 1. Character Set 레벨Server > Database > Table > Column 순으로 적용-- 2. Connection 설정 확인SHOW VARIABLES LIKE '%character%';SHOW VARIABLES LIK..
IT/DB
예전엔 Mysql/Maria DB 테이블에 컬럼을 추가하거나 수정하는등 ALTER (DDL) 실행시 테이블에 Lock 이 걸려 Select, Insert, Update, Delete 같은 DML 이 동시에 실행되지 못하는 문제가 있었다. 이렇게 될 경우 해당 테이블에 쿼리를 날리던 서버에서 문제가 발생할수 있다. 가장 좋은 방법은 서비스 점검을 띄운후 이런 작업을 진행하는것인데 서비스마다 상황이 달라 다운타임이 허용되지 않는 24시간 서비스의 경우 난감하다. 그리고 이러한 문제를 해결할수 있는 기능이 Online DDL 이다. (테이블 스키마 변경도중 DML 실행 가능) - Myqsl 5.6 이상 부터 - MariaDB 10 이상 부터 Online DDL 은 알고리즘에 따라 작동 방식이 다른데 종류는 다..
최근 외래키에 대하여 질문을 받은적이 있다. 실무에서 잘 사용하지 않고 성능적인 이슈가 있다는건 어렴풋이 기억나는데 확신이 서지않아 정확하게 대답을 못한 일이 있었다. 오래되서 기억이 잘 안날수도 있겠지만 정확히 이해하지 않고 이때까지 관성적으로 사용한 기분이라 이번 기회에 제대로 알아봐야겠다. 내 기억 속 외래키.. 학부생 시절 관계형 데이터베이스에 대해 배울때 외래키에 대해서 배웠었고 스키마 설정시 외래키도 지정했었던걸로 기억한다. 근데 막상 실무에 투입되어보니 외래키를 다들 쓰고있지 않았다. 보통 외래키를 사용함으로 인해 데이터 정합성 문제를 해결할수 있고 이로 인해 데이터 신뢰도가 높아질수 있을 것이다. 하지만 실무에선 이 외래키를 사용함으로 인해 얻는 장점보다 단점이 더 많아 보였기 때문에 외래..
1. DB 에서 Index 란? 2. Index 의 장점 3. Index 의 단점 4. 효율적인 Index 설정 방법 1. DB 에서 Index 란? 우선 DB 에서 Index 는 DBMS 에서 조회시 탐색 속도를 높이기 위한 기술 이다. 사전에서 단어를 찾을때 찾아보기 쉽도록 일정한 순서로 나열한 목록이라고 생각하면 된다 (색인) Index 없이 데이터를 저장한다면, 데이터는 순차적으로 쌓이고 이러한 구조에서 원하는 데이터를 찾기 위해선 모든 데이터에 대하여 순차탐색(O(n))이 일어난다. 이것을 우린 풀 스캔 (FULL-SCAN) 또는 테이블 스캔(TABLE-SCAN) 이라고 부른다. 그래서 이 쌓인 데이터들을 좀더 효과적으로 조회 하기 위해 DBMS 는 특정 자료구조를 활용하여 특정 데이터를 쌓아 ..