예를 들어 사용자 테이블이 있고 사용자간에 친구 매퍼가있는 경우를 예로들 수 있습니다. 사용자에게 'friends-count'라는 추가 열을 추가하고 친구를 추가 할 때마다 업데이트해야하며 그렇지 않으면 매번 필요할 때마다 계산 쿼리를 수행해야합니다. 어느 것이 더 효율적입니까?가장 효율적인 관계 계산 방법
답변
왜 두 가지 버전의 진실을 갖고 있고 동기화되지 않은 경우 어떻게 할 것입니까? 그리고 어떻게 결정할 것입니까?
가장 효율적인 방법은 매번 계산하는 것이고, 캐시를 유지하는 지원 및 검증 노력은 계산상의 이점보다 중요 할 수 있습니다. CPU 사이클은 devs의 노력과 비교하여 싸다.
앱에서 병목 현상이 발생하여 캐싱을 보게되면 캐싱에 실질적인 이점이 있습니다.
오케이 알겠습니다. 그래서 일관성 문제가 더 많습니다. – Wiz
에 따라 다릅니다. 더 효율적인 옵션은 매번 카운트하는 것이라고 Joocer가 말했듯이 항상 사실은 아닙니다.
시스템에 다음 쿼리가 오기 전에 쿼리가 결과를 반환 할 수있는 빈도로 쿼리 된 사람에 대한 관계 정보가없는 경우 (해당 제한은 아키텍처 효율성에 따라 다름) 해당 될 수 있습니다. 만약 당신이 1 초안에 우정을 쌓을 수 있고, 2 초에 10 건의 계산 요청을 받으면 시스템이 곧 망가질 것입니다.
각 요청에 대해 "페이 스북 (Facebook)"과 같이 크고 자주 질의되는 시스템에서 카운팅 동작이 실제로 효율적이지는 않습니다.
카운팅 필드의 동시성은 시스템에 많은 작업을하지 않고도 여러 고급 기술 (중간 계층, 프런트 엔드 또는 각 아키텍처의 기본 설정에 따라 데이터베이스)을 통해 처리 할 수 있습니다. 데이터베이스 크기에 크게 의존하지 않습니다.
아키텍처에 대한 자세한 내용은 특정 사례에 대한 더 나은 답변을 얻을 수 있습니다.
캐싱은 추가 열 (예 : 데이터베이스 구체화 된 뷰, RDBMS에서 지원하는 경우 사용자에게 제안하는 경향이있는 마녀)에 계산을 저장하는 것과 비슷한 방식입니다. 캐싱 구현에 따라 RDBMS에 여분의 정보를 최적의 방식으로 직접 저장하는 것보다 효율성이 떨어지는 경향이 있습니다.
데이터에 많은 업데이트가있는 경우가 아니라면 한 줄로 하나의 값을 읽는 것이 더 빠릅니다. 그러나 이와 같은 권리를 행사하려는 관련 노력은 무시 당해서는 안되며 아마도 기대 이상일 것입니다. – joocer
- 1. 효율적인 계산
- 2. SQL의 효율적인 여는 계산 방법
- 3. 가장 효율적인 그렙 방법
- 4. Trasverse를위한 가장 효율적인 방법
- 5. 연락처와 가장 효율적인 방법
- 6. HTTP 코드를위한 가장 효율적인 방법
- 7. BlackList를 구현하는 가장 효율적인 방법
- 8. 큐를 모니터링하는 가장 효율적인 방법
- 9. 링크 테스트를위한 가장 효율적인 방법
- 10. 이미지를 업데이트하는 가장 효율적인 방법
- 11. 파일을 읽는 가장 효율적인 방법
- 12. &&를 수행하는 가장 효율적인 방법?
- 13. 파일을 검색하는 가장 효율적인 방법
- 14. Ruby에서 가장 효율적인 입력 방법
- 15. 정규식을 사용하여 효율적인 단어 계산 방법
- 16. 일대 다 테이블을 업데이트하는 가장 효율적인 방법
- 17. 가장 효율적인 방법 (두 가지 방법)
- 18. 가장 효율적인 방법은
- 19. URLByAppendingPathComponent의 가장 효율적인 사용
- 20. 효율적인 조회수 계산 방법은 무엇입니까?
- 21. 이미지 ROI에서 효율적인 히스토그램 계산
- 22. 배열에 대한 빠르고 효율적인 계산
- 23. 효율적인 경험적 CDF 계산/저장
- 24. 웹 사이트에서 객체의 '인기'를 계산하는 가장 효율적인 방법
- 25. 하나의 char을 CharSequence로 변환하는 가장 효율적인 방법
- 26. 마우스 스무딩을 구현하는 가장 효율적인 방법
- 27. PNG를 HTTP 응답으로 생성하는 가장 효율적인 방법
- 28. 가장 효율적인 실버 라이트 드로잉 방법
- 29. HTML과 PHP를 렌더링하는 가장 효율적인 방법
- 30. iOS 앱에서 데이터를 저장하는 가장 효율적인 방법
성능에 대해서만 이야기하는 경우 다른 테이블에서 계산하는 것보다 단일 필드에서 읽는 것이 더 빠릅니다. 이러한 접근 방식은 사용자가 친구를 추가하거나 친구를 추가 할 때마다 더 많은 작업이 필요합니다. –