db(3)
-
인덱스를 사용하지 않아야 할 때
인덱스를 사용하지 않아야 할 때 실무에서 인덱스를 사용했을 때 컬렉션 스캔보다 속도가 느린 경우가 있었습니다. 인덱스를 걸면 수정, 삭제를 제외하곤 성능이 좋아져야 맞다고 생각했기에 의아했습니다. 원인은 인덱스로 생성한 필드가 중복이 많아 가져오는 도큐먼트가 많다는 것이었습니다. OREILLY 사의 몽고DB 완벽 가이드 책에 따르면 인덱스는 데이터 일부를 조회할 때 가장 효율적이며 어떤 쿼리는 인덱스가 없는 게 더 빠르다고 합니다. 인덱스는 컬렉션에서 가져와야 하는 부분이 많을수록 비효율적인데, 인덱스를 하나 사용하려면 두 번의 조회를 해야하기 때문입니다. 한 번은 인덱스 항목을 살펴보고, 또 한 번은 도큐먼트를 가리키는 인덱스의 포인터를 따라갑니다. 반만에 컬렉션 스캔을 할 때는 도큐먼트만 살펴보면 됩..
2023.04.08 -
Transaction
Transaction 트랜잭션이란 무엇일까요? DB에 조회든 생성/수정이든 요청을 보내는 한번의 통신을 트랜잭션이라고 생각했습니다. 조금 더 자세한 정의를 찾아보고자 글로 정리해보았습니다. techopedia에는 이렇게 정의해두었습니다. 트랜잭션은, 데이터베이스란 문맥 상에선 독립적으로 데이터를 조회하고 업데이트 하기 위해 실행되는 논리 단위라고 합니다. 그리고 전문가들은 데이터베이스 트랜잭션을 데이터베이스 디자인 환경 내에서 얻을 수 있는 "작업 단위"라고 얘기합니다. 그리고 트랜잭션은 COMMIT으로 시작돼 ROLLBACK SQL로 끝이나며 완성됩니다. ACID는 트랜잭의 특징들을 정의합니다. Atomicity(원자성) : 트랜잭션은 완결성을 충족시켜야 합니다. 커밋이 완료돼 DB에 저장이 되든, 롤..
2022.06.04 -
(1) MariaDB 로컬 사용자 추가
회사 DB를 로컬로 다뤄보려고 코드 내 사용자/패스워드와 로컬 DB(localhost) 연동, DB파일 로컬 export 두 가지 과정을 진행했습니다. DB는 MariaDB 기준입니다. 1. localhost 사용자 추가 혼자서 프로젝트를 만들 땐 root 사용자만 있어도 충분했기 때문에 사용자를 추가해본 적이 없었지만, 회사에 들어오니 필수가 되었습니다. 사용 툴은 DB 툴, 윈도우 기준 cmd(커맨드 프롬프트) 입니다. 저는 MariaDB를 사용했는데 MySQL Workbench와 HeidiSQL 두 가지 툴을 사용했습니다. 제가 볼 땐 큰 차이는 없습니다. DB 툴을 사용하면서 cmd까지 사용하는 이유는 root 권한 때문입니다. 새로운 사용자를 추가할 때 root 권한이 필요한 경우 (grant ..
2021.06.08