W dzisiejszych czasach robiłem wiele rzeczy do kalkulowania. Zazwyczaj wolę wykonywać te obliczenia w PHP niż w MySQL, choć wiem, że PHP nie jest w tym dobry. Myślałem, że MySQL może być gorszy. Ale znalazłem pewien problem z wydajnością: niektóre strony zostały załadowane tak wolno, że limit czasu 30 sekund nie jest dla nich wystarczający! Zastanawiam się, gdzie jest lepsze miejsce do obliczeń i zasad? Sugestie będą mile widziane.gdzie powinienem robić obliczenia, PHP lub Mysql?
Odpowiedz
Wszystko, co można zrobić za pomocą RDBMS (GROUPING, SUMMING, AVG), gdzie dane mogą być filtrowane po stronie serwera, powinno być wykonane w RDBMS.
Jeśli obliczenia byłyby bardziej odpowiednie w PHP, to dobrze, idź z tym, ale poza tym nie próbuj robić w PHP tego, do czego został stworzony RDBMS. PRZEGRASZ.
ale nie zapomnij zasady wersetów wizowych: jeśli wykonujesz wiele obliczeń na jednym kawałku danych, to nie jest to dla db – Andrey
Uczyniłbym to bardziej, gdybym mógł. OP-produkt mojej firmy często podsumowuje dziesiątki milionów wierszy na 1 000 lub mniej. Ich stacje robocze są zwykle systemami przeciętnymi w magazynie; ich serwery baz danych to 8- lub 16-rdzeniowe bestie z dziesiątkami gigabajtów pamięci RAM. Dlaczego mielibyśmy uruchamiać wszystkie te dane przez kabel i zgniatać je na maszynie o 1 lub 2 procesorach z ograniczoną pamięcią? Wykonuj pracę jak najbliżej danych. – DaveE
Powiedziałbym, że do obliczeń w językach, które zostały stworzone do tego, jak C++. Ale jeśli wybierzesz między mysql i php, php jest lepszy.
Czy możesz opracować, co czyni go lepszym? –
jest to lepsze, ponieważ mysql został stworzony do manipulacji danymi i dlatego jest zoptymalizowany pod kątem tego. silnik językowy nie jest tak dobry, jak php, ponieważ php został wykonany dokładnie dla skryptów. – Andrey
To zależy od rodzaju obliczeń. Jeśli jest to matematyka wymagająca dużej mocy obliczeniowej lub arbitralnej precyzji, lepiej używać C/C++ z libgmp lub może Python. Jeśli jest to prosta agregacja, zrób to, co możesz w MySQL, nie czyniąc kodu MySQL niewiarygodnie złożonym, a resztę wykonuj w PHP. –
Używaj PHP, nie marnuj swojego MySQL na niekończące się kalkulacje. Jeśli mówisz o takich rzeczach jak sortowanie OK, aby używać MySQL do takich rzeczy, SUMA, AVG, ale nie przesadzaj.
w rzeczywistości, funkcje natywne MySQL są bardzo szybkie i często bardziej wydajne jest ich używanie zamiast ponownego przetwarzania "surowych" danych w PHP. Bardzo częstym tego przykładem jest arytmetyka Date. Z drugiej strony, sortowanie, zwłaszcza jeśli indeksy są niedostępne, może być zaporowo wolne i może, w niektórych przypadkach, być lepiej zrobione w PHP. – dnagirl
cmptrgeekken ma rację, potrzebowalibyśmy trochę więcej informacji. ALE jeśli potrzebujesz wykonać obliczenia odnoszące się do zapytań do bazy danych lub wykonując na nich operacje, porównujesz pola certyfikatów z bazy danych, zmodyfikuj bazę danych. Wykonywanie specjalnych zapytań w SQL to cheape r (jeśli chodzi o czas i jest zoptymalizowany pod kątem tego). Jednak zarówno PHP, jak i MySQL są po stronie serwera, tak naprawdę nie ma znaczenia, gdzie wykonujesz obliczenia. Ale jak już mówiłem wcześniej, jeśli są operowane na bazie danych, wykonaj bardziej skomplikowane zapytanie SQL i użyj tego.
Natywne funkcje MySQL są bardzo szybkie. Zrób to, co ma sens w Twoich pytaniach.
Jeśli masz serwery wielokrotne (tj. Serwer WWW i serwer DB), zauważ, że serwery DB są znacznie droższe od serwerów WWW, więc jeśli masz duży ruch lub bardzo zajęty serwer DB, nie rób tego. "dodatki", które można obsługiwać równie łatwo/wydajnie na maszynie serwera WWW, aby zapobiec spowolnieniu.
Zalecam wykonanie dowolnego obliczenia poziomu wiersza za pomocą RDBMS.
Nie tylko uzyskasz lepszą wydajność, ale także zwiększysz mobilność aplikacji, jeśli chcesz przełączyć się na inny język skryptowy, powiedzmy PHP na Python, ponieważ już sortowałeś, filtrowałeś i przetwarzałeś dane używając swojego RBDMS.
Pomaga także oddzielić logikę aplikacji, pomógł mi zachować czystość i czystość kontrolerów podczas pracy w środowisku MVC.
Wystarczy śledzić, gdzie znajdują się wąskie gardła. Jeśli stolik zostanie zablokowany, ponieważ próbujesz uruchomić niektóre obliczenia, wszyscy pozostali oczekują na odczyt/zapis danych w wybranych tabelach, a kolejka będzie dalej rosnąć.
MySQL jest zwykle szybszy w przetwarzaniu poleceń, ale PHP powinno być w stanie obsłużyć proste problemy bez zbytniego zamieszania. Oczywiście nie oznacza to, że powinieneś wielokrotnie sprawdzać pingi w bazie danych dla tych samych obliczeń w kółko.
Możesz lepiej buforować wyniki, jeśli możesz i zlecasz cronowi aktualizację go raz dziennie/godzinę (nie rób tego co minutę, Twój dostawca usług hostingowych prawdopodobnie Cię nienawidzi).
Wykonaj tak dużo filtrowania i scalania, jak to tylko możliwe, aby wprowadzić minimalną ilość danych do php. Gdy masz już ten minimalny zestaw danych, zależy to od tego, co robisz, obciążenia serwera i być może innych czynników.
Jeśli możesz zrobić coś równie dobrze w obu, a SQL nie jest zbyt skomplikowany, aby pisać (i utrzymywać), to rób to. Dla prostej matematyki sql jest zwykle dobrym zakładem. W przypadku manipulacji ciągami, w których łańcuchy kończą się na tej samej długości lub rosną, php jest prawdopodobnie dobrym zakładem.
Najważniejszą rzeczą jest zażądanie jak najmniejszej ilości danych. Manipulowanie danymi, przynajmniej to, co może zrobić sql, jest wtórne do pobierania i przesyłania danych.
- 1. Obliczenia PHP są błędne
- 2. PHP MySQL Query gdzie x = zmienna
- 3. Obliczenia zmiennoprzecinkowe Powers (PHP/BCMath)
- 4. Potrzebuję API. Gdzie powinienem zacząć?
- 5. Obliczenia matematyczne PHP naprawdę powolne
- 6. MySQL: Pytanie o WYBIERZ GDZIE I/LUB
- 7. Połączenie php mysql
- 8. MVC: Gdzie powinienem sformatować dane?
- 9. Skrót PHP zmienia typ zawartości na application/x-www-form-urlencoded. Nie powinienem tego robić
- 10. Inicjalizacja statycznego macierzy C - jak bardzo powinienem to robić?
- 11. Gdzie powinienem uciec z ciągów HTML, strony JSP lub serwletów?
- 12. Czy powinienem ponownie łączyć się z mysql w PHP?
- 13. Czy powinienem martwić się zastrzykiem PHP, jeśli nie używam MySQL?
- 14. Data Różnica w MySQL do obliczenia wieku
- 15. obliczenia całkowitego czasu trwania w MySQL
- 16. Gdzie powinienem przechowywać klucz obcy?
- 17. Gdzie powinienem ustawić język (CurrentThread.CurrentCulture)?
- 18. Gdzie powinienem umieścić wtyczkę .vim?
- 19. Obliczenia pływaka php 2 kropki dziesiętne
- 20. Gdzie powinienem zachować stan wyboru dla listy?
- 21. Czy powinienem używać funkcji PHPSRV PHP?
- 22. Czy powinienem używać funkcji php mail lub phpmailer?
- 23. Odzyskiwanie nazw MySQL, gdzie typ danych == X
- 24. Gdzie powinienem umieścić ogólnodostępną statyczną pustkę Główna?
- 25. Gdzie powinienem wskazać katalog główny VCS TeamCity?
- 26. Gdzie powinienem napisać JavaScript dla View Components?
- 27. zmienne leniwy Pythona? lub, opóźnione kosztowne obliczenia
- 28. WYBIERZ MYSQL GDZIE ZAES_ENCRYPT
- 29. MySQL gdzie w()
- 30. MySQL Multiple Gdzie Klauzula
do obliczeń w C++ :) – Andrey
Myślę, że potrzebujemy więcej informacji. Jakie rodzaje obliczeń robisz? – cmptrgeekken
@ Andrey, agreed.if czy mogę ... – Young