본문 바로가기

db5

MongoDB 성능 개선을 위한 Index 설정 MongoDB 에서 인덱스를 설정을 하게 되면 보다 빠르게 조회가 가능하다. (다른 DB도 마찬가지) 하지만 인덱스 설정에 따라서 성능의 차이가 있음을 이해하며, 어떤 것들을 고려하며 인덱스를 설정해야 되는지에 대해서 정리한다. MongoDB 성능 개선을 위한 Index 설정 Index 란? 먼저 들어가기에 앞서 Index에 대해서 가볍게 알아본다. 인덱스란 DB의 검색을 빠르게 하기 위해서 데이터의 순서를 미리 정해해 두는 과정을 말한다. 자주 조회되는 필드를 따로 저장해서 조회 및 정렬 시의 속도를 빠르게 하는 기법이다. MongoDB Index? MongoDB에서는 고정된 스키마는 없지만, 원하는 데이터 필드를 인덱스로 지정하여 검색 결과를 빠르게 조회하는 것이 가능하다. 그렇기 때문에 MongoD.. 2023. 6. 12.
MongoDB - bulkWrite() 를 이용한 대량 쓰기 작업 처리 데이터의 싱크 맞추는 작업을 하기 위해 몽고디비에서 지원하는 bulkWrite 기능을 이용해서 작업하여 bulkWrite에 대해서 정리한다. MongoDB - bulkWrite() 를 이용한 대량 쓰기 작업 처리 bulkWrite 몽고디비에서 제공하는 bulkWrite()을 이용하면 단일 컬렉션에 대해서 대량 쓰기 작업 뿐만 아니라 업데이트 및 삭제 작업도 수행이 가능하다. (대량 삽입만이라면 isertMany()도 이용 가능) bulkWrite 기능을 이용할 때는 주의점이 있는데 bulkWrite 작업 시 방식이 두가지가 존재한다는 점이다. 첫번째로는 Ordered 방식으로 순서가 존재하는 작업 목록이고 두번째로는 그 반대인 Unordered 방식으로 순서가 존재하지 않는 방식이다. Ordered 방식.. 2023. 2. 18.
스프링 트랜잭션 @Transactional(readOnly=true) @Transactional 옵션에는 여러가지 옵션 설정이 있지만 오늘은 그 중에서 readOnly 옵션에 대해서 정리하려고 한다. 옵션에서도 알 수 있듯이 읽기 전용이라는 것을 알 수 있다. 그렇다면 이런 의문점이 들 수 있다. 어짜피 조회만 하는 곳에 @Transactional 어노테이션을 붙일 필요가 있을까? 라는 의문점이다. 결론적으로는 안붙인다고 문제가 될 것은 없지만 붙이게 된다면 여러가지 이점을 주기 때문에 붙이는 것이 좋다. 그럼 @Transactional(readOnly=true) 설정에 대해서 알아보자. 스프링 트랜잭션 @Transactional(readOnly=true) Transaction? 먼저 트랜잭션이란 데이터베이스의 상태를 변경하고자 할 때 한 번에 수행되어야 하는 연산들을 의.. 2022. 12. 9.
MySql char varchar text 정리 개발을 하던 중 히스토리성 데이터를 디비에 저장해야 될 일이 있었는데 그 중에 파라미터에 관련된 데이터를 저장해야되는 필드가 있었다. 동적인 데이터이기 때문에 가변성 타입인 varchar 타입으로 한 후 길이를 설정하려고 하는데 이게 상황에 따라서 길수도 있고 짧을 수도 있어 고민에 빠졌다. 정말 간단하게는 text 타입을 쓰게되면 이런 길이 고민은 할 필요 없어지지만 성능에 영향을 미치기에 최대한 신중히 고민 후 선택하기로 했다. 그 과정에서 알게된 내용을 정리한다. MySql char varchar text 정리 먼저 각각의 대해서 기본개념에 대해서 정리한다. char 고정 길이이다. 0~255까지 길이를 저장 가능하다. 고정 길이 만큼 디스크 공간을 차지한다. 저장 후 남은 공간을 채우기 위해 남은.. 2022. 10. 11.
MySQL - 특정 데이터 포함 확인 LOCATE / INSTR / LIKE 들어가며 MySQL을 통해 테이블에 문자열이 포함되어 있는지 확인하는 3가지 방법에 대해서 정리한다. INSTR 기능 MySQL의 LOCATE 함수를 사용하여 문자열에 특정 데이터가 포함되어 있는지 확인이 가능하다. LOCATE 함수는 LOCATE(substr, str)과 같이 두개의 인수를 사용한다. substr에는 문자열을 입력하고 str에 있는 문자열 substr의 검색 위치를 정수로 반환한다. 만약 substr에 str이 없다면 0을 반환한다. 추가적으로 LOCATE(substr, str, pos) 가 있는데 여기서 pos 위치로 예를들어 5를 적게 되면 문자열 5 이후에 주어진 str을 찾게 된다. 쿼리를 날려보면 다음과 같이 주어진 문자열을 포함을 하고 있다면 결과를 다 반환한다. INSTR .. 2022. 8. 19.