반응형

N+1 이란?

예를 들어 Stuedent 엔티티에 GradeInfo엔티티와 ClassInfo엔티티가 EAGER Loading으로 연관매핑된 경우

@Comment("교실정보")
@ManyToOne //디폴트 값은 (fetch = FetchType.EAGER)
@JoinColumn(name = "class", referencedColumnName = "classId")
private ClassInfo class;


@Comment("학년정보")
@ManyToOne
@JoinColumn(name = "grade", referencedColumnName = "gradeId")
private GradeInfo grade;

아래와 같은 JPA 쿼리메소드를 사용할 때

studentRepository.findAll();

findAll() 수행 시점에 Student 엔티티를 조회하는 select 쿼리와

+ 매핑된 GradeInfo 엔티티를 조회하는 select 쿼리,

+ 매핑된 ClassInfo 엔티티를 조회하는 select 쿼리,

모두 수행된다.

예를 들어 1000개의 Student 엔티티는 각각 1,2,3,4,5,6 이라는 6개 중 하나의 gradeInfo 값을 가질 수 있고

1-1, 1-2, 1-3, 1-4, 1-5, 1-6 부터 6학년 6-6 까지 이라는 총 36개중 하나의 ClassInfo 값을 가질 수 있다하면

전체 Student 를 조회할 시 student에 연관된 GradeInfo 엔티티를 조회하기 위해 총 6번의 select,

ClassInfo 엔티티를 조회하기 위한 36번의 select가 추가로 나감. 이것을 N+1 문제라고 함

 

왜 join으로 쿼리 생성이 되지 않고 select가 각각 나가는걸까

=> JPA가 메소드 이름을 분석해서 JPQL을 생성하고 실행함.
=> JPQL을 생성할때는 fetch 전략을 참고하지 않기 때문

 

LAZY Loading 전략을 사용하면 N+1문제가 해결되나?

=> 해당 엔티티에 연관매핑된 엔티티를 조회(사용)할 때 select가 추가로 나가게 됨. 

=> 또는 엔티티 return 시에 결국 select하게 됨

=> 해결 안 됨

 

QueryDSL을 사용해도 N+1 문제가 생기나

QueryDSL은 JPQL 빌더역할을 해주는 것이기 때문에 QueryDSL 로 entity select하는 경우에도 발생함.

leftJoin을 걸어놨지만 join이 되지않고 select가 각각 나간다.

public List<Goods> nplus1test(){
        List<Student> result = queryFactory
                    .select(qStudent) 
                    .from(qStudent)
                    .leftJoin(qStudent.grade,qGradeInfo)
                    .leftJoin(qStudent.class,qClassInfo)  
                    .fetch();

 

entity 전체가 아닌 컬럼을 지정해서 뽑는다면 해결되나

컬럼 지정시 join이 되지만 컬럼을 지정해서 뽑으면 tuple 로 반환되어  불편함

public List<Tuple> nplus1test(){
  List<Tuple> result = queryFactory
                                  .select(qStudent.name,qStudent.grade)
                                  .from(qStudent)
                                  .fetch();
  for(Tuple tuple : result){
          System.out.println(tuple.get(qStudent.name));
          System.out.println(tuple.get(qStudent.grade));
  }
  return result;
}

=> Projections.bean 혹은 Projections.fields를 사용해 DTO를 반환받으면 됨

 

그래도 entity 전체를 select하고 싶다면

EntityGraph를 사용하면 됨

EntityGraph : DataJPA에서 fetchjoin을 어노테이션으로 사용할 수 있도록 하였다. 연관관계가 지연로딩으로 되어있는 엔티티를 조회할 경우 fetch join을 사용한다. 

fetchjoin : select 대상 엔티티와 fetch join이 걸려있는 엔티티를 포함해 join하여 select 함. 

EntityGraph 사용 예시

@EntityGraph(attributePaths = {"class","grade"})
List<Student> findAll();

 

fetchjoin 사용 예시

@Override
public List<Goods> nplus1test(){
        List<Goods> result = queryFactory
                    .select(qStudent)
                    .from(qStudent)
                    .leftJoin(qStudent.class,qClassInfo)
                    .fetchJoin()  
                    .leftJoin(qStudent.grade,qGradeInfo)
                    .fetchJoin()    
                    .fetch();
        return result;
}
반응형
반응형

32인치 게이밍모니터 알파스캔 콘퀘스트 32U90G 구매 후기

1. 그래픽카드 GTX1050 사용중, DP 연결 

3840x2160, 2560x1600 은 98Hz 까지밖에 안나오고 

2560x1440 으로 144Hz 까지 나옴. 글카를 바꿀때가 됐다.

2. FHD 144hz 27인치 모니터 사용할때보다 pc 켜지는게 늦다. 왠지는 나도 모름. pc를 바꿀때가 됐다.

3. 모니터 높이 조절이 간편함.  그냥 위아래로 밀면 알아서 고정되는것이 신기함.

4. 옵션 등의 메뉴 버튼은 우측에 달려있어 왼손잡이는 불편함. 

5. 플스와 PC 둘다 연결해놨는데 입력을 DP->HDMI1로 사용하다가 HDMI의 전원을 끌 경우 자동으로 DP로 안넘어가는게 아쉽. HDMI1로 입력을 변경하고 나서 다시 자동으로 해놔야함.

6. 내장 스피커가 아주 만족스럽다. 저가 스피커보다 훨 낫다.

 

굉장히 만족중 

반응형
반응형

1. 구글 월 캘린더에 포인터를 올리면 자동 스크롤이 돼서 계속 월이 이동하는 현상 발생
2. 윈도우 설정을 켜면 몇몇 옵션들이 자동 스크롤 되어 변경되는 현상 발생

마우스, 키보드 다 꺼보고 재부팅 해봐도 똑같았음.

아래 글들은 내가 시도해본 것들. 되지 않음.

https://support.google.com/calendar/thread/602889/calendar-jumps-months-ahead-when-i-move-my-mouse-from-one-day-to-another-during-a-month?hl=en

 

Calendar jumps months ahead when I move my mouse from one day to another during a month. - Google Calendar Community

 

support.google.com

https://kin.naver.com/qna/detail.naver?d1id=1&dirId=1060304&docId=448835574&qb=6rWs6riAIOy6mOumsOuNlCDsiqTtgazroaQ=&enc=utf8&section=kin.ext&rank=1&search_sort=0&spq=0

 

구글 캘린더에 마우스포인터를 놓으면 다음달로 자동으로 넘어가요

구글 캘린더에 마우스포인터를 놓으면 다음달로 계속 넘어가요 손을 떼지 않으면 2026년 2028년까지 쭉 계속 자동으로 넘어가는데이 문제 해결방법 아시는 분 계실까요?!

kin.naver.com

 

해결방법

제어판 > 하드웨어 및 소리 > 장치관리자 . 마우스 및 기타 포인팅 장치

HID 규격 마우스 우클릭 > 속성 > 드라이버 > 디바이스 사용 안 함

 

반응형
반응형

증상

- 잘 되던 무선마우스&키보드가 인식이 안 됨(MK450사용)

- 키보드를 누를 때 NUM 이 굉장히 짧게 짧게 깜빡임

- 마우스를 ON하면 센서가 짧게 깜빡이고 꺼짐.

 

시도

- 건전지 바꿔보아도 똑같음 

- 전날까진 정상적으로 작동했으므로 키보드/마우스 문제는 아닌 것 같았음.

 

진단

https://www.qsenn.co.kr/article/file-download/5/1194/#none

 

QSENN M1000 무선 마우스 리시버 주파수 연결 프로그램 및 펌웨어FILE DOWNLOAD - (주)큐센 공식 홈페이

DOWNROAD GLOBAL BUSINESS 현재 위치 DOWNROAD FILE DOWNROAD

www.qsenn.co.kr

큐센에서 알려준대로 해봤는데 초록불이 안들어옴. 

리시버를 뺐다 다시 꼽아도 PC에서 USB 인식하는 소리가 안 남 -> USB 리시버 고장이었다

 

해결

큐센 고객센터(070-4218-7026)로 전화를 때려서 무선마우스/키보드 USB리시버 구입을 요청했음. 흰색 검은색 선택지를 주셨다.

리시버+택배비 = 3500원을 계좌송금하였음.

배송받은 리시버를 꼽고 진단 프로그램을 돌리니 USB리시버 인식 잘 됨.

마우스의 경우 우클릭+휠을 6~7초정도 꾹 눌렀다가 떼면 센서에 빨간불이 쭉 들어온다. 그럼 성공.

키보드의 경우 ESC+Q를 꾹 눌렀다가 떼면 NUM 센서가 깜빡이는데 그때 NUM키를 몇번 눌러주면 더이상 깜빡이지 않고 연결 되었음을 알 수 있다.. 

키보드 연결을 아무리 해봐도 안 되길래 본체에 꼽아놓은 리시버 코앞에 키보드를 갖다대고 시도했더니 원큐에 됐다.

반응형
반응형

게임을 전체화면으로 켜놓고 alt tab을 눌러 화면전환을 하면

'신호없음'이 뜨면서 화면이 나가버리는 현상...

 

게임 내의 디스플레이 주파수 설정(ex 144hz)과

윈도우 화면의 주파수가 같도록 설정해야 한다. 

 

- 윈도우에서 화면 주파수 설정하는 방법

우클릭 > 디스플레이 설정 > 고급 디스플레이 설정 > 새로고침빈도

반응형
반응형

1. 마이페이지 > 응시자격서류관리 > 제출서류 확인 에서 본인이 제출해야 하는 서류 확인.

2. 보내는 방법 : 방문 / 우편

3. 우편 시 제출서류와 함께 이름, 주민번호 등을 기재해 보내야 함. (전화로 물어봄)

4. 받는 주소 : 본인이 응시한 시험 담당 본부(원서접수할 때 선택했음)

5. 받는 사람 : 자격검정팀 혹은 '담당자연락처'메뉴에서 자격검정 업무 담당자 확인하면 될듯. (전화해서 물어보았음) 

본인은 전화해서 우편보내는 주소 물어보다가 이메일 제출도 가능하냐고 물어봤더니 이메일 주소를 알려주셔서 이메일로 제출하였다.

심사 후 적합으로 뜸.

반응형
반응형
반응형
반응형

따로따로 그린 그래프를 말그대로 밑이든 옆이든 이어붙이기

patchwork library 필요

library(patchwork)

 

두 개의 그래프가 있다.

pm2.5plot<-ggplot(tsv,aes(x=date,y=PM2.5, colour=기기이름,group=기기이름))+
  geom_line()+
  theme(legend.position="none", legend.box="vertical")+
  facet_wrap(~"PM2.5",ncol = 1,scales="free")


pm10plot<-ggplot(tsv,aes(x=date,y=PM10, colour=기기이름,group=기기이름))+
  geom_line()+
  theme(legend.position="bottom", legend.box="vertical")+
  facet_wrap(~"PM10",ncol = 1,scales="free")

 

1. 위아래로 붙이기

위 그래프 / 아래 그래프

pm2.5plot/pm10plot

 

 

2. 좌우로 붙이기

좌 그래프 + 우 그래프

pm2.5plot+pm10plot

반응형
반응형

Four Points by Sheraton Seoul Guro

포포인츠가 Four Points였다니 충격을 금할길이 없다. 

호텔 오른쪽은 카페겸 베이커리. 로비와 연결되어있음!

 

 

로비
로비에 아이맥 있음
전객실 금연
슈페리어 더블룸
욕실 비데 있음. 화장실은 별로 크지 않음.

 

욕실 어메니티. 뚜껑이 여닫기 편하다.
객실 어메니티. 아래칸엔 냉장고.
따란
물 두개

 

어메니티 박스. 면봉은 없다... 왼쪽건 화장솜이 아니라 새니테리 백..

 

옆엔 옷장인데 옷걸이와 가운, 다리미와 다리미판이 있다.
전자시계 예쁘당
소독하고 비닐로 감싸놓은게 좋았음.

 

드라이기 
객실에서 볼 수 있는 하늘. 오늘 날씨가 참좋았다. ^.,^

반응형
반응형

 

로비

 

 

객실 복도

소파 겁나 푹신 개꿀...

 

 

창 밖에 뷰 조아요 

욕조는 없음

어메니티는 샴푸 / 컨디셔너 / 바디로션 / 바디워시 

비데가 아님 

 

 

세면대는 화장실말고 객실내에 있음 개편해 

 

 

 

 

 

면도기 있음

 

뷰 조아 

반응형

+ Recent posts