개요 이번 글에서는 MSSQL에서 Like을 사용한 검색 쿼리를 개선했던 경험과 여러가지 개선 방법에 대해 이야기해 보려고 한다. 환경 Microsoft SQL Server 2016 (SP1) 배경 현재 사내에서 Spring + MSSQL을 기반으로 운영 중인 게임 커뮤니티 사이트의 백엔드를 전담하고 있다. 금일 게임 운영실로부터 해당 사이트의 모든 검색 시스템이 작동하지 않는다는 연락을 받게 된다. 이전부터 게시글 조회 관련 API의 Latency가 길었어서 두고두고 쿼리 리팩토링을 진행하려고 했었는데 오늘 갑자기 서비스에 장애가 발생한 상태인 것이다. 문제 원인 장애가 생겼다는 소식을 전달받자마자 인프라팀에 모니터링 대시보드를 요청 해당 DB 서버의 CPU 및 메모리 사용률을 확인하였다. 게임 커뮤니..
개요 이번 글에서는 MySQL에서 Safe mode를 해제하는 방법에 대해 이야기해 보려고 한다. MySQL Safe mode? MySQL Workbench 사용 중 다음과 같은 오류를 만나본 적 있을 것이다. Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Editor and reconnect. Workbench 환경에서 키값을 이용한 update나 delete만을 허용하도록 되어 있는데 이를 준수하지 않고 여러 행에 영향을 미칠..
개요 이번 글에서는 계층형 재귀 쿼리를 사용해서 성능개선 및 프로젝트를 유지보수와 확장에 용이한 구조로 만들었던 과정에 대해 이야기해보려고 한다. 프로젝트 개요 현재 개인적으로 배달의 민족 모작 프로젝트를 진행하고 있는 중에 각 별점마다 해당하는 리뷰의 개수와 점수별로 별의 색을 칠하고 표시해주는 작업이 필요했다. 리팩토링 전 문제점 - 1 SELECT storeIdn, storeName, storeAddress, storePhonenum, storeIntro, minDelevery, deleveryTime, deleveryTip, (SELECT COUNT(*) FROM bm_review WHERE storeIdn = {storeIdn}) AS reviewCount, (SELECT COUNT(*) FRO..
개요 이번 글에서는 MSSQL에서 테이블에 윈도우 이모지 값이 삽입되었을 때 깨져보이는 것을 해결하는 방법에 대해 이야기해 보려고 한다. 환경 Microsoft SQL Server 2016 (SP1) 배경 사내 웹 운영툴을 Spring에 MySQL과 SQL Server을 같이 사용하여 운영하고 있는데 게임 사업실로부터 운영툴에서 게임 커뮤니티의 카테고리 이름에 윈도우 이모지를 넣어서 새로 등록하면 해당 이모지가 등록 시에 사라진다는 이슈를 전달받았다. 해당 카테고리 등록 API를 확인해 보니 SQL Server와 커넥션이 일어나는 API인 것을 확인하고 카테고리 테이블의 카테고리 이름 컬럼의 데이터 형식을 살펴보았다. 역시나 해당 컬럼의 데이터 형식은 varchar로 구성되어 있었다. 예를 들어 아래와 ..