Skip to main content

Posts

Featured

N+1 문제

references: https://zetawiki.com/wiki/N%2B1_%EC%BF%BC%EB%A6%AC_%EB%AC%B8%EC%A0%9C https://velog.io/@kim6515516/npuls N+1 쿼리 문제 N+1는 DB 쿼리를 사용할 때에 피해야 할 안티패턴의 예시 중 하나이다. 쿼리 1번으로 N건을 가져 왔는데, 그것과 관련한 추가 내용을 얻기 위해 쿼리를 추가로 수행하는 상황을 말한다. 이게 문제가 되는 이유는, 여러번의 쿼리를 보내게 되면 성능적인 이슈가 발생 할 수 있기 때문이다. 주로 사람이 직접 쿼리를 짜는 경우에는 해당 문제를 의식하고 있는 환경이기 때문에 자연스레 회피하게 되지만, 그렇지 않은 경우(ORM) 에 발생하는 문제이다. 예시 (Django) class Place ( models . Model ): name = models.CharField(max_length= 50 ) address = models.CharField(max_length= 80 ) def __str__ ( self ) : return self .name class Restaurant ( models . Model ): place = models.OneToOneField(Place, on_delete=models.CASCADE, related_name= 'restaurant' ) name = models.CharField(max_length= 50 ) severs_pizza = models.BooleanField(default=False) def __str__ ( self ) : return self .name 위의 코드를 보면 알겠지만, Restaurant 모델과 Place 모델이 서로에게 restaurant 와 place라는 이름으로 연결 되는것을 알 수 있다. 다음의 코드를 보자. for place in Place

Latest Posts

ACID란?

백엔드 뿌수기 프로젝트

Container, LXC, Docker

객체지향이란?

메모리 할당 알고리즘

Dreamhack.io xss-1