2010-07-29 14 views
9

To pytanie prawdopodobnie nie ma jednoznacznej odpowiedzi, więc jeśli jest uważane za subiektywne i, powiedzmy, złe, proszę, aby je zamknąć.Maksymalna liczba zapytań SQL na stronę

Zasadniczo opracowuję całkiem dużą aplikację internetową (PHP) i używa ona CakePHP. Obecnie jest on w fazie rozwoju, a niektóre rzeczy w Bazie Danych są bardzo skomplikowane, dlatego trzeba wykonać wiele zapytań, aby wyświetlić strony (około 7-25 zapytań).

Ponieważ prawdopodobnie ma to być na dużą skalę, chciałbym się dowiedzieć, co to jest maksymalnie, czyli coś w rodzaju wskazującego, że "Prawdopodobnie robisz coś źle i powinieneś zoptymalizować ", liczba zapytań SQL, które należy wykonać na stronę. W tej chwili mam bardzo prosty system buforowania, który redukuje zapytania wykonywane przez jednego użytkownika do około 5 na 15 sekund.

Czy często używasz 25 zapytań? Czy powinienem zatrzymać rozwój (mam dużo czasu) przez jakiś czas i zreorganizować kod, usunąć zapytania SQL, które nie są używane, i poświęcić czas na poprawę wydajności w tej części?

To prawdopodobnie brzmi trochę mylące, więc wznowił: Czy istnieje de facto maksymalna dla liczby zapytań prowadził na stronę, która nie młot serwera (czyli środowisku współdzielonym hostingu)?

Dzięki.

Odpowiedz

7

Łączna liczba trafień w bazie danych jest również proporcjonalna do liczby wyświetleń strony. Więc jeśli liczba odsłon stron * zapytań na stronę jest większa niż pojemność bazy danych, oznacza to, że masz problem. Oczywiście natężenie ruchu jest bardzo różne w różnych witrynach, podobnie jak pojemność bazy danych, więc naprawdę nie można wyznaczyć liczby.

+0

co rozumiesz przez "pojemność bazy danych" w jaki sposób definiujesz lub dowiadujesz się o tych informacjach? – Ash

+0

@Ashley: Mam na myśli pojemność bazy danych do wykonywania zapytań. Baza danych może wykonywać średnią liczbę zapytań na minutę. Jeśli spróbujesz przekroczyć ten limit, najprawdopodobniej zacznie upływać limit czasu. Nie wiem, czy istnieje dobrze zdefiniowany sposób, aby to ustalić, ale możesz przetestować go samodzielnie, uruchamiając strumień ruchu w bazie danych, aby zobaczyć, ile może obsłużyć. – recursive

4

Jak wspomniano w rekurencji, nie ma magicznej liczby. Zdecydowanie za dużo zmiennych. Takich jak specyfikacje serwera bazy danych. Oczywiście im lepszy serwer, tym więcej zapytań można uruchomić.

0

Ewentualnie łatwiejszą i niemal równie skuteczną metodą optymalizacji byłoby wypowiadanie zapytań tam, gdzie jest to możliwe. W ten sposób wykonujesz mniej podróży w obie strony do serwera bazy danych, zachowując dotychczasową logikę (głównie) w stanie nienaruszonym.

7

Najważniejszą rzeczą nie jest liczbą, ale kosztem zapytania ...

Running 100 SELECT name FROM foo WHERE id = 1 LIMIT 1 będzie dużo lepsze niż bieganie 1 z następujących czynności:

SELECT * 
    FROM foo AS a 
    JOIN bar AS b 
    JOIN car AS c 
    WHERE a.col LIKE '%f%' OR b.col LIKE '%b%' OR c.col LIKE '%b%' 

Tak nie przejmuj się liczbą, chyba że jest to absurd (ponad 100 jest wysokie, kilka tysięcy to absurd) ... Nie zapominaj, że możesz włączyć pamięć podręczną zapytań MySQL ... Więc nawet jeśli trafiasz na wiele zapytań na sekundę, tak długo, jak nie ma tony aktualizacji, większość z nich będzie bezpośrednio wyników pamięci podręcznej ..

Powiązane problemy