반응형

Backend 59

인덱스(4) : 생성, 삭제, 사용, 테스트하기 + 실행계획 보는법

목차  이전 게시물https://lotuus.tistory.com/168 인덱스(3) : 인덱스 종류목차 이전 게시물https://lotuus.tistory.com/167 인덱스(2) : 인덱스가 데이터를 검색하는 방법목차 이전 게시물 https://lotuus.tistory.com/166 인덱스(1) : 사용하는 이유, 정의, 데이터목차  인덱스 왜 사lotuus.tistory.com    MySQL 기준으로 알아보겠습니다.일반적으로 인덱스는 생성과 삭제만 가능합니다. (수정 불가) 생성하기-- B+Tree 인덱스 (기본 인덱스)CREATE INDEX idx_btree ON table_name (column_name);-- 해시 인덱스 (Memory 엔진에서만 사용)CREATE INDEX idx_has..

Backend 2024.07.17

인덱스(3) : 인덱스 종류

목차 이전 게시물https://lotuus.tistory.com/167 인덱스(2) : 인덱스가 데이터를 검색하는 방법목차 이전 게시물 https://lotuus.tistory.com/166 인덱스(1) : 사용하는 이유, 정의, 데이터목차  인덱스 왜 사용해야하나요?문제상황데이터 10억개가 저장되어 있습니다.아래 SQL문을 실행하면 데이터lotuus.tistory.com    다양한 관점으로 인덱스를 분류할 수 있습니다.   물리적으로 정렬하나요?Clustered Index테이블의 레코드를 지정된 컬럼으로 물리적으로 재배열하는 인덱스입니다.테이블당 하나의 클러스터드 인덱스만 가질 수 있습니다.일반적으로 primary key가 설정된 컬럼은 자동으로 Clustered Index로 설정됩니다.⇒ Prima..

Backend 2024.07.17

인덱스(2) : 인덱스가 데이터를 검색하는 방법

목차 이전 게시물 https://lotuus.tistory.com/166 인덱스(1) : 사용하는 이유, 정의, 데이터목차  인덱스 왜 사용해야하나요?문제상황데이터 10억개가 저장되어 있습니다.아래 SQL문을 실행하면 데이터베이스는 어떻게 데이터를 검색할까요?SELECT * FROM Employees WHERE Name = 'Alice';데이터베lotuus.tistory.com   앞에서 인덱스가 없는 경우, Full Table Scan 방식을 이용하여 검색하는 것을 알아봤습니다.그렇다면 인덱스가 있는 경우엔, 어떤 방식을 사용하길래 데이터를 빠르고 효과적으로 검색할 수 있는 것일까요?인덱스를 구현하는 방식은 대표적으로 3가지가 있으며,인덱스를 생성할 때 구현 방식을 설정할 수 있습니다.HashTable..

Backend 2024.07.17

인덱스(1) : 인덱스를 사용하는 이유, 인덱스의 정의, 인덱스에 저장되는 데이터

목차  인덱스 왜 사용해야하나요?문제상황데이터 10억개가 저장되어 있습니다.아래 SQL문을 실행하면 데이터베이스는 어떻게 데이터를 검색할까요?SELECT * FROM Employees WHERE Name = 'Alice';데이터베이스는 Full Table Scan 방식을 이용하여 데이터를 검색합니다. Full Table Scan테이블의 첫번째 행부터 마지막 행까지 모든 행을 순차적으로 검사하는 방법입니다.단점 : 시간이 오래 걸립니다. 해결방법인덱스를 적용합니다.   인덱스란 무엇인가요?책 뒷면의 색인과 매우 유사합니다.💡 인덱스는 데이터를 빠르게 찾기 위해 사용하는 자료구조입니다.  아래와 같은 순서대로 인덱스에 대해 살펴보겠습니다.인덱스가 어떤 데이터를 가지고 있는지인덱스는 어떤 방식으로 데이터를 ..

Backend 2024.07.17

[SpringBoot] UnexpectedRollbackException: Transaction silently rolled back because it has been marked as rollback-only 해결후기

목차 상황 1. 이벤트에 당첨된 경우 휴대폰번호를 입력하고 [쿠폰받기] 버튼을 누르면 쿠폰이 즉시 발송된다. 2. 근데 가끔씩 [쿠폰받기] 버튼이 눌린채로 아무런 반응이 없는 경우가 있다. (브라우저 자체가 멈춘다던가... 아무런 액션 없이 그냥 대기만 한다던가...) 3. 기다려도 응답이 없으니 사람들은 [쿠폰 안받기] 버튼을 누른다. 4. [쿠폰 안받기] 버튼을 누르면 당첨내역을 초기화시킨다. (다른사람에게 할당되어야하므로) 서버에 찍힌 로그는 아래와 같다. 2022-12-05 10:45:24 쿠폰받기 시작 2022-12-05 10:45:25 쿠폰안받기 시작 2022-12-05 10:45:25 쿠폰받기-쿠폰발송 성공 2022-12-05 10:45:26 쿠폰안받기 종료 2022-12-05 10:45:2..

Backend 2022.12.06

[SpringBoot] Jpa Connection Minimum-Idle 설정하지 말자... 에러 후기

한동안 DB에 커넥션에러가 발생했어서 maximum-pool-size를 설정주었는데 minimum-idle 셋팅도 있어서 같이 셋팅해주었었다. spring: datasource: hikari: ... minimum-idle: 5 maximum-pool-size: 10 그런데..... 처음보는 에러가 발생했다 HikariPool-1 - Connection is not available, request timed out after 45005ms. 오잉???? 이상하네 이 서버는 처음띄우는 서버가 아니라 이전에도 계속 돌아가고있었던 서버고, 사실 커넥션 에러가 날거였으면 요청이 더 많았을 때 에러가 났어야했는데.. 지금은 요청이 상대적으로 적은편인데 에러가 나서 의아해했다 여러가지 이유가 있었겠지만 단편적으로..

Backend 2022.12.04

[SpringBoot] Apache Poi를 이용한 엑셀다운로드는 SXSSF를 쓰자..!

목차 에러 발생!!!!!!!!!!!! https://lotuus.tistory.com/145 [SpringBoot] Apache Poi를 이용한 엑셀 다운로드 구현 목차 통계 API를 만들다보면 화면에도 값을 보여주어야하고, 엑셀 다운로드도 가능해야합니다 ㅎㅎ 대표적으로 사용되는 Apache Poi를 이용하여 엑셀 다운로드를 구현해보겠습니당! 예제 UserPoint En lotuus.tistory.com 예전에도 엑셀다운로드 게시글을 올렸었는데, 운영에서 갑자기 힙메모리가 부족하다며 Out Of Memory 에러가 발생했다..... 이유는 두가지였다 첫번째 ) 요청 중복 필터링 안함 화면에 보이는 엑셀 다운로드 버튼을 누르고, 실제 다운로드 창이 뜰때까지는 시간이 좀 걸린다 그런데 참을성 없는 분들이 기..

Backend 2022.12.03

Spring Jpa SelfJoin 순환참조 방지하며 다른 엔티티와 맵핑하기

목차 보통 셀프조인은 카테고리처럼 1차, 2차, 3차.... 무한정으로 늘어날 수 있을 때 사용되는데, 하나의 테이블로 모든 관계를 정의할 수 있어서 유용하게 쓰인다. 셀프조인 형태로 구현한 카테고리 엔티티와 메뉴 엔티티를 맵핑하고 Json을 내려주는 과정에서 어떻게 순환참조를 피할 수 있을까?? 예시데이터 카테고리 메뉴 내가 원하는 응답값 카테고리 { "message": "카테고리 정보를 조회하였습니다.", "data": { "id": 2, "categoryCode": "soup_stews", "categoryName": "찜_탕_찌개", "parent": { "id": 1, "categoryCode": "koreanfood", "categoryName": "한식", "parent": null, "ch..

Backend 2022.11.09

Server-Sent Event (SSE)란? feat Node.js

목차 기존 프로젝트에선 백엔드 -> 프론트로 데이터를 보내줄때 웹소켓을 사용하였다. 웹소켓은 양방향인데, 굳이 프론트 -> 백엔드방향으로 연결되어있을 필요가 없어서 이것저것 찾아보니 SSE를 알게되었고, 사용해보았다! SSE란 ? SSE는 서버의 데이터를 실시간으로 스트리밍 하는 기술이다. 변경된 데이터를 가져오기 위해 지속적으로 API를 호출하여 동기화하는 작업을 없앨 수 있는 것이다! - 웹소켓은 WSS 프로토콜을 따로 사용하지만 SSE는 HTTP를 사용하기때문에 별다른 서버 셋팅이 필요하지 않다는 장점이 있다. - 클라이언트와 서버가 최초 한번 HTTP연결을 맺으면 그 뒤로 서버가 클라이언트에게 지속적으로 데이터를 보낼 수 있다. EX ) 서버에서 가끔씩 데이터를 받아야하는데, N초동안 데이터가 실..

Backend 2022.09.20

[SpringBoot] Apache Poi를 이용한 엑셀 다운로드 구현

목차 2022.12.03 내용 추가 아래 코드에서는 XSSFWorkbook을 사용하는데, 실제 운영서버에서 나는 Out Of Memory 에러를 경험했다. 편안한 주말을 보내고싶다면 꼭 반드시 아래 글을 읽어보고 SXSSFWorkbook을 사용하자. https://lotuus.tistory.com/153 [SpringBoot] Apache Poi를 이용한 엑셀다운로드는 SXSSF를 쓰자..! 목차 에러 발생!!!!!!!!!!!! https://lotuus.tistory.com/145 [SpringBoot] Apache Poi를 이용한 엑셀 다운로드 구현 목차 통계 API를 만들다보면 화면에도 값을 보여주어야하고, 엑셀 다운로드도 가능해야합니다 ㅎ lotuus.tistory.com 통계 API를 만들다보면..

Backend 2022.08.20
반응형