분류 전체보기
-
MySql [ Like, Full Text Index ] 테스트공부하기/node.js 2023. 2. 24. 16:43
MySql 테이블 테스트 환경 AWS RDS MYSQL db.t3.micro 클래스 survey(설문지) 각 설문지는 5개의 Question(질문)을 갖는다. Question(질문지) 각 질문지는 4개의 Question_opt(선택지)를 갖는다. 설문지, 질문지, 선택지 각 테이블의 더미 데이터는 250만개~ 270만 설문지 찾기, 설문지 상세 두개 메서드를 테스트 진행 ERD 인덱스 적용 전 LIKE 검색 실행코드 select id, name, description from survey where name like "%Odio iure%" limit 10; 실행계획 5번 실행 결과 : 0.005, 0.004, 0.004, 0.004, 0.005 sec 인덱스 적용 후 LIKE 검색 적용 전과 실행계획,..
-
nestjs, typeorm-extension을 사용한 seeding공부하기/node.js 2023. 2. 22. 03:34
https://github.com/tsCalm/new-nest-survey/tree/seeder GitHub - tsCalm/new-nest-survey Contribute to tsCalm/new-nest-survey development by creating an account on GitHub. github.com 위 이미지의 빨간 박스를 친 부분에 대한 seeding 작업을 진행합니다. 개념 Seeder 데이터베이스에 데이터를 삽입하는 방법 중 하나 개발자들이 원하는 데이터를 자동으로 생성하고 데이터베이스에 추가할 수 있는 프로그램 Seeder는 일반적으로 데이터베이스 구성 파일과 함께 사용 개발자들은 Seeder를 실행하여 데이터를 자동으로 생성 및 삽입할 수 있다 Seeding Seeder를 ..
-
mysql 쿼리 실행 절차공부하기/데이터베이스 2023. 2. 19. 18:12
mysql 엔진 오브젝트 사전 지식 파서 사용자가 요청한 SQL 문을 쪼개 최소 단위로 분리하고 트리를 만듬, 트리를 만들면서 문법 검사 수행 전처리기 파서에서 생성한 트리를 토대로 SQL 문에 구조적인 문제가 없는지 파악 옵티마이저 핵심 엔진 중 하나로 두뇌라고 불러도 과언이 아니다 전달된 파서 트리를 토대로 필요하지 않은 조건은 제거하거나 연산 과정을 단순화한다. 어떤 순서로 테이블에 접근할지, 인덱스를 사용할지, 어떤 인덱스를 사용할지, 임시 테이블을 사용할지와 같은 실행계획을 수립한다. 옵티마이저가 선택한 최적의 실행 계획이 최상의 실행 계획이 아닐 가능성도 있다 엔진 실행기 옵티마이저에서 수립한 실행 계획을 참고하여 스토리지 엔진에서 데이터를 가져온다 그 후 Mysql 엔진에서는 읽어온 데이터를..
-
MySql Isolation Level(격리수준)공부하기/데이터베이스 2023. 2. 19. 17:27
여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것 READ UNCOMMITTED DIRTY READ : 어떤 트랜잭션에에서 처리한 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있는 현상 트랜잭션이 아직 커밋되지 않은 다른 트랜잭션의 변경 사항을 읽을 수 있도록 한다. 높은 처리량을 보장하지만 데이터 일관성이 보장되지 않는다. 거의 사용되지 않는다. READ COMMITTED 트랜잭션이 다른 트랜잭션이 커밋한 변경 사항을 읽을 수 있도록 하지만, 아직 커밋되지 않은 변경 사항은 읽을 수 없다. NON-REPEATABLE READ라는 부정합의 문제가 있음 ( 아래는 예시 ) a 트랜잭션에서 사원의 이름을 a -> ..
-
MySql Database Lock공부하기/데이터베이스 2023. 2. 19. 02:04
기능 여러 클라이언트가 동시에 데이터를 접근(*동시성)하는 상황에서 데이터 일관성을 유지 역할 동시에 여러 개의 쿼리가 실행될 때, 쿼리 실행에 필요한 데이터에 대한 접근 권한을 부여하고, 다른 쿼리가 해당 데이터에 접근하지 못하도록 잠금 주의 사항 락이 걸려있는 동안 다른 쿼리는 대기해야 하므로, 락이 걸리는 시간이 길어질수록 시스템 전체의 처리 속도가 느려질 수 있다. 또한, 락이 걸리는 범위가 크면 큰만큼 다른 쿼리가 접근할 수 있는 데이터의 범위가 줄어들게 된다. mysql 엔진 잠금 종류 글로벌락 ( GLOBAL LOCK ) mysql에서 제공하는 잠금 가운데 가장 범위가 크다. 특정 세션에서 글로벌 락을 얻으면 다른 세션에서는 select문을 제외한 대부분의 ddl문, dml 문장은 대기 상태..
-
다양한 데이터베이스 특징공부하기/데이터베이스 2023. 2. 18. 21:01
데이터베이스의 원칙 data integrity(무결성) : 정확성, 일관성, 유지성이 유지되는 것 개체 무결성 : 모든 테이블은 기본키(pk)를 가져야하며 null값과 중복을 허용하지 않는다. 참조 무결성 참조 관계에 있는 두 테이블의 데이터가 항상 일관된 값을 유지해야 한다. 외래키 값은 null이거나 참조하고 있는 테이블의 기본키 값과 같아야 한다. 도메인 무결성 : 테이블에 존재하는 컬럼의 데이터 타입이 알맞게 저장되어야 한다. 고유 무결성 : 테이블 컬럼의 값은 고유해야 한다. 키 무결성 : 하나의 테이블에는 적어도 하나의 키가 존재해야 한다. data reliability (안전성) : row, column 구조 변경 시 최소화해야 한다. scalability (확장성) : 요구사항의 변경등으로..
-
원티드 프리온보딩 백엔드 챌린지 2023년 2월 후기후기 2023. 2. 18. 20:04
이번달 원티드 프리온보딩을 통해서 데이터베이스의 중요한 개념을 많이 배웠다. 그 동안 나는 orm을 통해서 원하는 결과를 얻기만하면 된다고 생각했다. 하지만 내부적으로 어떤 동작이 일어나고 같은 결과를 얻더라도 발생하는 비용에서 상당한 차이가 있다는걸 알게 됐다. 또 데이터베이스 지식뿐만 아니라 강사님은 자신의 이력서, 회사 지원 이력 및 결과 등 사람들이 오픈하기 꺼려하는 예민한 개인 정보까지 오픈해주셨다. 수강생들에게 데이터베이스 지식뿐만 아니라 여러가지 경험을 간접적으로 할 수 있는 강의였다고 생각한다. 프리온보딩 주제 다양한 데이터베이스 데이터베이스 장/단점 비교 Big Tech 기업들이 MySQL을 선택하는 이유 MySQL이 제공하는 다양한 기능들 MySQL 최적화 방안 수업내용 1주차 데이터베..
-
원티드 프리온보딩 백엔드 챌린지 2023년 1월 후기후기 2023. 2. 18. 19:24
사수가 없는 환경에서 개발을 진행해온 내 입장에서 정말 여러가지로 도움이 많이된 강의였다. '항상 내가 잘 하고 있는게 맞는걸까?' 또는 '이런 문제를 다른 개발자들은 어떻게 해결할까?'라는 궁금증이 있었는데 이 강의를 통해 지금 잘하고 있다고 확신했고 다른 개발자들의 생각도 엿볼 수 있어서 너무 좋았다. 원래 알고 있던 지식도 체크해 볼 수 있었고 새로 습득한 지식도 아주 흥미로웠다. 이런 좋은 기회를 준 원티드에게 너무 감사했다. 강의 기록 레파지토리 https://github.com/tsCalm/wanted-pre-onboarding-challenge-BE-task-JAN.2023 GitHub - tsCalm/wanted-pre-onboarding-challenge-BE-task-JAN.2023: ..