728x90
반응형
- NOT IN 쿼리를 사용할 때 발생할 수 있는 문제와 최적화 방법에 대해 설명해 주세요.2025-05-12 14:14:06아래와 같이 NOT IN을 사용한 쿼리는 직관적이고 사용하기 쉽지만, 대규모 데이터셋에서 심각한 성능 저하를 일으킬 수 있습니다.SELECT p FROM Post pWHERE p.id NOT IN :postIds문제점NOT IN은 부정 조건으로, 대부분의 DBMS에서 전체 테이블 스캔이나 인덱스 풀 스캔을 유발합니다. 전체 데이터나 테이블을 스캔한 후 조건에 맞지 않는 레코드를 필터링 해야하기 때문에 데이터베이스 옵티마이저가 효율적인 실행 계획을 세우기 어렵습니다.인덱스를 효과적으로 활용하지 못합니다. IN 절은 인덱스 Range Scan을 통해 빠르게 처리할 수 있지만, NOT IN은 인덱스 활용도가 현저히 떨어집니다.대량의 값을 IN 절에 넣으면 실행 계획 생성이 늘어나고, 파싱 및 최적화 단계에서 ..
- Elasticsearch란?2025-04-24 00:18:371. Elasticsearch에 대해 알아보자.Elasticsearch는 Apache Lucene 기반의 Java 오픈소스 분산형 RESTful 검색 및 분석 엔진이다.방대한 양의 데이터에 대해 실시간으로 저장과 검색 및 분석 등의 작업을 수행할 수 있다.특히 정형 데이터, 비정형 데이터, 지리 데이터 등 모든 타입의 데이터를 처리할 수 있는데,Elasticsearch는 JSON 문서(Document)로 데이터를 저장하기 때문이다. Elasticsearch는 단독 검색을 위해 사용하거나, ELK(Elasticsearch & Logstash & Kibana) 스택을 기반으로 사용한다.ELKELK는 Elasticsearch + Logstash + Kibana를 같이 연동하여 사용한다는 의미이다. Filebe..
- Full-Text Search 사용법2025-04-22 19:04:29Full-Text Search는 첫 글자 뿐 아니라 중간의 단어나 문장으로도 인덱스를 생성해주기 때문에, Full-Text Index를 통해 순식간에 검색 결과를 얻을 수 있다. 전체 텍스트 검색은 긴 문자의 텍스트 데이터를 빠르게 검색하기 위한 MySQL의 부가적인 기능이다.일반 인덱스와 차이로는, 풀텍스트 인덱스는 긴 문장 전체를 대상으로 인덱싱 하며, InnoDB와 MyISAM 테이블에만 지원하며, char, varchar, text 타입 문자만 인덱싱이 가능하다. 또한 여러 개의 열에 풀텍스트 인덱스 지정이 가능하다.Full-Text Index 사용법풀텍스트 인덱스 생성 3가지 방식CREATE TABLE 테이블이름( ... 열이름 데이터형식, ... FULLTEXT 인덱스이름..
- [MySQL] LIKE 문의 동작 방식과 Index와의 관계2025-04-21 18:29:47post 라는 테이블의 title이라는 컬럼에 Index가 걸려있다고 가정한다.SELECT * FROM post WHERE title LIKE 'test%';SELECT * FROM post WHERE title LIKE '%test';SELECT * FROM post WHERE title LIKE '%test%'; LIKE 문은 특정 문자열의 포함 여부를 체크하는 기준에 따라서 3가지 형태로 구분할 수 있다.여기서 중요한 점은 데이터의 앞부분에 문자열이 포함되는지 체크하는 경우에만 Index를 타게 된다는 점이다. 즉, 첫 번째 쿼리는 title에 대한 Index가 데이터 조회에 사용되지만, 나머지 쿼리들은 테이블 풀스캔을 하게되는 것이다. 왜 이렇게 동작하는 것일까?LIKE와 INDEX위에서 이야기한..
- 성능테스트를 위한 K6 사용법2025-02-24 18:45:56k6란 성능 테스트 및 부하 테스트를 위한 오픈 소스 도구이다.웹 어플리케이션의 API 성능을 측정하는데 사용된다.동시 접속, 가상의 유저, 반복 횟수 등을 설정해서 서버 응답 시간, 처리량 등을 확인 할 수 있습니다.또한 가장 큰 장접은 Javascript 코드를 통해 테스트 시나리오를 작성 할 수 있다는 것이고 Grafana 진영에서 개발되어 연동이 수월해진다. 정리하자면grafana에서 제공javascript로 테스트 작성가상 유저, 반복, 서버 응답 시간, 처리량 등 확인 가능Docker를 통해 k6를 사용해보겠다.그냥 인텔리제이 터미널에서 진행했다.1. 설치docker image 다운로드 docker pull grafana/k6 2. 스크립트 작성초기 생성 시 존재하는 기본 코드import h..
- [로드맵] CI/CD2025-01-02 12:12:14CI/CD(Continuous Integration/Continuous Delivery)는 코드 변경 사항을 빌드, 테스트 및 배포하는 프로세스를 자동화하는 소프트웨어 개발의 관행 및 도구 모음이다. Continuous Integration은 코드 변경 사항을 자주 중앙 저장소에 병합하여 자동화된 빌드 및 테스트를 실행하는 것을 포함하고, Continuous Delivery는 빌드 단계 후에 모든 코드 변경 사항을 테스트 또는 스테이징 환경에 자동으로 배포하여 이를 확장한다. 일부 구현에는 Continuous Deployment가 포함되며, 여기서 변경 사항은 자동으로 프로덕션에 릴리스된다. CI/CD 파이프라인에는 일반적으로 코드 컴파일, 단위 테스트, 통합 테스트, 보안 검사 및 배포와 같은 단계가 ..
- [로드맵] 기능 테스트2024-12-31 10:21:40기능 테스트는 소프트웨어를 테스트하여 기능적 요구 사항이 충족되는지 확인하는 것이다. 일반작으로 테스터가 소스 코드를 이해하지 못하는 블랙박스 테스트의 한 형태이다.테스트는 입력을 제공하고 예상/실제 출력을 비교하여 수행된다.성능, 부하, 확장성 및 침투 테스트를 포함하는 비기능 테스트와 대조된다.
- [로드맵] 단위 테스트2024-12-31 10:19:06단위 테스트는 프로그램의 개별 구성 요소 또는 단위를 격리하여 테스트하여 올바르게 작동하는지 확인하는 소프트웨어 테스트 방법이다. 이 접근 방식은 미리 정의된 입력으로 실행하고 결과를 예상 결과와 비교하여 함수나 메서드와 같은 애플리케이션의 가장 작은 테스트 가능한 부분을 확인하는 데 중점을 둔다. 단위 테스트는 일반적으로 자동화되어 개발자가 코딩 단계에서 작성하여 버그를 일찍 포착하고 코드 리팩토링을 용이하게 하며 각 코드 단위가 의도한 대로 수행되는지 확인한다. 각 구성 요소를 격리하고 테스트 함으로써 단위 테스트는 코드 안정성과 유지 관리성을 개선하는 데 도움이 된다.
728x90
반응형