회사 통계 시스템에서 이상한 이슈가 등록된 적이 있다. 같은 화면을 새로고침하는데 일정 확률로 다른 값이 나온다는 제보였다.처음에는 프런트엔드에서 데이터 취합을 잘못하는 줄 알았다. 그런데 백엔드에서 같은 쿼리를 반복해서 돌려보니 결과값이 실제로 달라졌다.의심했던 것들리드 레플리카를 여러 대 쓰는데 복제 지연으로 싱크가 안 맞는 문제쿼리 자체의 문제캐시나 기타 문제원인: paginate에 ORDER BY가 없었다결론부터 말하면 paginate를 쓸 때는 order by를 반드시 해줘야 한다.SQL 표준상 ORDER BY가 없는 SELECT는 행 순서를 보장하지 않는다. 이건 버그가 아니라 명세다. DB는 가장 빠르게 가져올 수 있는 순서로 반환할 자유가 있다.그런데 paginate()는 내부적으로 LIM..
Laravel로 개발할 때 가장 먼저 까는 패키지를 하나만 고르라면 나는 Laravel Debugbar를 고른다. 에러 페이지, 뷰, 세션, 쿠키, 실행된 쿼리까지 한 화면에서 볼 수 있다. 특히 중복 쿼리를 잡을 때 많이 쓴다.설치composer require barryvdh/laravel-debugbar --dev--dev를 반드시 붙인다. 개발 의존성으로 설치해야 운영 배포 시 composer install --no-dev 에서 빠진다.# .envAPP_DEBUG=trueDEBUGBAR_ENABLED=trueLaravel 5.5 이상은 패키지 자동 등록(auto-discovery)이 되므로 config/app.php에 프로바이더를 수동으로 추가할 필요가 없다. APP_DEBUG=true 면 자동으로..
