db

(2021.08.12) 추가 분명 아래 해결 방법으로 수정하여 QA 서버에서 잘 동작하던 쿼리가 운영 서버에서는 또다시 글 제목과 같은 에러가 발생했다. 그래서 '운영 서버 코드에 내가 수정한 내역이 적용 되지 않았나..?' 하는 말도 안되는 일을 의심하며 확인했지만.. 역시 그런 일은 없었다. 그럼 뭘까.. SSMS는 자꾸 조회 쿼리의 첫 줄에서부터 에러가 발생한다고 묵묵히 로그를 뱉는다. 진짜 혹시나 해서 SELECT 앞에서 delete 키를 눌러봤는데.. ...? 눈에 보이지 않는 글자 하나가 지워진다. 협력사 굇수 형님께 여쭤보니 인코딩 문제일 가능성이 높다고 하신다. 그래서 개발자들 사이에서 이런 환경 세팅을 다 동일하게 해야 한다고.. ㅠ 하여튼 진짜 끝... SSMS에서 쿼리 수정 후, xm..
· Study/ETC
업무를 하며 기존에 작성된 쿼리 문들을 보면, 간혹 WHERE 절 뒤에 '1=1'이라는 녀석이 붙은 것을 볼 수 있었다. 어떤 의미인지, 또 언제 사용하는지 궁금하여 알아보았던 내용을 작성한다. WHERE 절? 이 글을 찾아온 것 자체가 WHERE 절이 무엇인지 알고 있을 것이라 생각한다. '어디'라는 WHERE의 의미처럼, 내가 DB로부터 가져오고 싶은 데이터의 '조건'을 걸어주는 부분이다. 가정 이 글의 목적이었던 '1=1'의 의미를 얼른 알아보기 전, 아래와 같은 간단한 쿼리 문이 있다고 가정하자. SELECT TOP 100 * FROM GYM_USER WHERE SQUAT >= '160' AND BENCHPRESS >= '80' AND DEADLIFT >= '180' GYM_USER라는 테이블로부..
거의 모든 DBMS는 인덱스 종류에 대해 특별한 언급이 없다면, B-Tree 계열 인덱스를 사용하는 경우가 대다수이다. 많고 많은 자료구조에서 왜 하필 B-Tree, B+-Tree를 사용하는지에 대해 알아본다. 이 글을 읽기 전에 이전 글을 읽고 오면 좋으며, 아래 사이트들의 내용을 토대로 작성했다. [Naver D2] 성능 향상을 위한 SQL 작성법 [Tistory] 데이터베이스 인덱스는 왜 'B-Tree'를 선택하였는가 [Tistory] 인덱스(index)란? [Tistory] B-Tree(B트리), B+트리 Tree란? 이 글을 찾아왔다는 것 자체가 Tree에 대한 개념은 이미 알고 있을 것이라 생각하고, 먼저 시간 복잡도에 대해 생각해보자. 일반적으로 위의 그림처럼 평균적으로 생긴 Tree에서 탐..
Index(이하 인덱스)는 DB를 다루다 보면 필연적으로 듣는 단어이다. 본격적으로 글에 들어가기 전에 인덱스에 대해 간단하게 설명하자면, DB 데이터 조회 성능 향상을 위해 사용한다. 대용량 데이터를 담고 있는 DB 테이블에서 우리에게 필요한 데이터를 빨리 찾으려면 이 '인덱스'라는 녀석의 도움이 필요하다. 인덱스가 아예 없거나 적절한 인덱스를 찾지 못하면, 어마무시한 데이터가 담겨있는 테이블 전체를 읽어야 하기 때문에 데이터 조회 시간이 오래 걸릴 것이다. 이 인덱스에 대해 앞으로의 글들을 통해 보다 자세히 알아보자. 본 글들은 아래 글들의 내용을 토대로 작성했다. [Wiki] 인덱스 (데이터베이스) [Naver D2] 성능 향상을 위한 SQL 작성법 [Tistory] 인덱스(index)란? DB 성..
어쩌다 주워 듣게 된 SQL 작성 표준을 적어둔다. 인터넷에 검색해보면 여러 표준이 나오는데, 거의 대부분이 같다. 존재 이유 어느 회사나 SQL 작성 표준 가이드가 존재하는데, 이러한 표준에 따른 형식화된 SQL 구문은 가독성을 높여서 구현 및 유지보수를 용이하게 한다. SQL 구문 표준 1. SQL 구문은 가로 최대 길이가 80자 이하가 되도록 작성 튜닝 또는 유지보수를 용이하게 한다. 2. SQL 문의 대소문자에 대한 표준을 정하여 준수 예약어는 대문자, 개체명은 소문자 등으로 작성한다. 3. 구문을 구분하는 중요한 절은 항상 새로운 행에서 시작 SELECT, FROM, JOIN, WHERE 등과 같이 중요한 절은 새로운 행에서 시작한다. 4. 쌍(Pair)으로 구성된 구문은 줄을 정렬 BEGIN ..
일주일 전쯤, MS SQL의 BEGIN TRAN 덕분에 겪었던 삽질에 대해 글을 쓰며 트랜잭션의 개념에 대해 잘 모른다는 생각이 들었다. 그래서 아래 글들을 참고하여 공부하였고, 정리 글을 남긴다. 출처) 1. 위키백과) 데이터베이스 트랜잭션 2. Naver D2) DBMS는 어떻게 트랜잭션을 관리할까? 3. Tistory) 트랜잭션(Transaction)이란? 4. Tistory) [DB기초] 트랜잭션이란 무엇인가? 데이터베이스 트랜잭션? 위키백과에서는 트랜젹션을 아래와 같이 정의하고 있다. "데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위" 여기서 "유사한 시스템"이란 트랜잭션의 성공과 실패가 분명하고, 트랜잭션이 상호 독립적이며, 일관되고 믿을 수 있는 시스템을 의미한다. 조금 더 ..
이 글을 읽기 전에 트랜잭션에 관해 작성한 글을 읽는 것을 추천한다. 오늘 회사에서 운영 업무를 하며, 게시글 하나를 지워 달라는 요청이 들어왔다. 해당 게시글이 DB에서 갖고 있는 Column 중 하나를 UPDATE만 해주면 되는 간단한 요청이었다. 그런데 두 시간 걸렸다. 데이터 수정 작업이다 보니 BEGIN TRAN을 사용하여 데이터를 바꾸고 애플리케이션 작동이 잘 되는지 확인하려고 했다. 그런데 해당 데이터를 사용하는 화면의 게시글들을 불러오는 쿼리에서 계속 멈춰있었다. 해당 쿼리를 SSMS나 DBeaver같은 DB 클라이언트 툴에서 실행해보면 잘 돌아가는데 말이다. BEGIN TRAN ? Begin Transaction이라는 뜻으로, MSSQL에서 제공하는 보호 기능이다. (MS 공식 문서) 무..
대흉근
'db' 태그의 글 목록