저는 현재 MySQL 데이터베이스를 많이 사용하는 두 개의 iOS 응용 프로그램을 개발하고 있습니다. 그들 각각은 MySQL 데이터베이스로부터 데이터를 요구하는 관련 질의를 실행하는 각각의 애플리케이션에 의해 요구되는 그들 자신의 API를 갖는다.왜 MySQL DB 캐싱을 사용합니까?
쿼리는 간단하고 사용자 또는 '객체'를 기반으로되는 변화 : 기반 위치에
SELECT `username`, `id`, `full_name` FROM `users` WHERE `id` = 1
INSERT INTO `users` (`full_name`, `username`, `email`, `password`, `signup_method`, `latitude`, `longitude`) VALUES (?, ?, ?, ?, ?, ?, ?)"
SELECT q.*, (SELECT COUNT(a.qid) FROM answers as a WHERE qid=q.id) AS a_count FROM questions as q ORDER BY a_count DESC LIMIT 1, 10
:
SELECT (6371 * acos(cos(radians(?)) * cos(radians(latitude)) * cos(radians(longitude) - radians(?)) + sin(radians(?)) * sin(radians(latitude)))) AS distance FROM `users` HAVING distance <= 5 ORDER BY points DESC
SELECT * , (6371 * acos(cos(radians(latitude)) * cos(radians({$values['latitude']})) * cos(radians({$values['longitude']}) - radians(longitude)) + sin(radians(latitude)) * sin(radians({$values['latitude']})))) AS distance FROM `questions` HAVING distance <= ? ORDER by distance LIMIT ?,?
이러한 쿼리는 분명 시간이 걸립니다. 특히 후자는 성능 강렬 때문에 발생합니다.
많은 서비스에서는 성능 향상을 위해 데이터베이스와 함께 캐싱 계층을 사용합니다. 예컨대 :
- Memcachd
- 레디 스
- 보다.
제 질문은 쿼리와 관련하여 캐싱을 사용해야하며 캐싱을 사용할 때의 이점은 무엇입니까?
감사합니다.
최대!
정말 훌륭한 답변입니다. +1 – Fluffeh
감사합니다. 그래도 조금 더 확장했습니다. :-) –
놀라운 대답, 매우 상세하고 요점. 답변을 보내 주셔서 감사합니다. –