have-a-meal / have-a-meal-server

1 stars 0 forks source link

[EAT-96] sql 성능 저하를 고려해 sql 튜닝하는 과정 #26

Open ywjywj opened 7 months ago

ywjywj commented 7 months ago

이슈 링크

ywjywj commented 7 months ago

찾아본 결과로는 insert into select에 where not exists를 사용해서 중복을 제거하는 방법이랑 insert ignore를 사용하는 방법이 있음 insert ignore를 사용하기 위해선 중복 검사용 필드가 필요하여 사용하려면 현재 food테이블에 name 속성을 UNIQUE로 변경해줘야할거 같다고 생각이 듬. 변경없이 사용하려면 전자의 방법으로 진행하면 될 것 같음.

ywjywj commented 7 months ago

image image image 전자의 방법으로 중복된 값 처리 후 저장하는건 성공하였음.

ywjywj commented 7 months ago

image image 현재 로직 상으로 중복된 값이 입력됐을때의 처리가 없기 때문에 예외가 뜨는것 같음. name 속성을 UNIQUE로 바꾼 다음 로직을 수정하고 확인해보도록 할 예정임.

ywjywj commented 7 months ago

image image image IGNORE를 사용하여 중복된 값은 삽입되지 않도록 성공하였음.

ywjywj commented 7 months ago

connection 사용을 더 줄이기 위해서 food를 전부 list에 담고 bulk insert를 해보기로 했으나 image image image image db에 값은 정상적으로 들어가지만 그 후 반환한 객체의 foodId값이 예상과는 맞지 않는 중복 데이터임에도 id값을 갖거나 뒷부분에 삽입된 데이터들의 중복되지 않은 데이터의 결과값이 null이 나오는 결과가 발생됨.

ywjywj commented 6 months ago

image image foodId를 사용하지 않고 name을 사용하여 삽입된 food객체의 id값을 가져와서 삽입하는 과정으로 바꿔 진행하여 오류 없이 정상적인 작동과 sql connection 사용 예측 수를 줄이긴 하였으나 실제로 테스트 결과로 보여주는게 있으면 좋을거 같다는 생각이 듬.