![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 27.10.2015 Ostrzeżenie: (0%) ![]() ![]() |
1. Przechowuje w tabeli MySQL dane bardzo wielu osób, coś w tym stylu:
Cytat Imię Nazwisko Numer: Jan Kowalski 634635325 Piotr Nowak 36746436 Tomasz Pietrzak 73622879 itd... Na stronie te dane będą wyświetlane w formie tabeli HTML (<table>). Tabelę MySQL wystarczy posortować (po kolumnie numer - od największego do najmniejszego) raz na dzień i ponieważ tabela MySQL ma bardzo dużo wierszy, to postanowiłem, że będę cachował wynik sortowania i aktualizował raz na dzień po ponownym sortowaniu (żeby oszczędzić moc serwera). Rzecz w tym, że nigdy nie używałem cachownia na stronach i nie wiem, czy bardziej wydajniejsze rozwiązanie będzie gdy zacachuję posortowane wyniki od razu z kodem html tabelki: czy tylko sam posortowane dane o osobach (jak ponizej)? Cytat Tomasz Pietrzak 73622879 Jan Kowalski 634635325 Piotr Nowak 36746436 Wydaje mi się, że wydajniej byłoby to zacachowac od razu z kodem HTML tabelki, bo jak będzie zacachowany tylko wynik sortowania, to dla każdego wiersza trzeba będzie robić coś w tym stylu: 2. Z jakiego rozwiązania polecalibyście skorzystać na początku? Chodzi mi, żeby to było w miarę przystępne do nauki. Co powiecie o takiej klasie do cachowania? Temat: klasa Cache |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Co to znaczy "bardzo duzo"? 100? 200? 1000 ?
Nie powinienies cachowac calej tabeli. Powinienies zalozyc index na pole po ktorym sortujesz i poprostu sortowac. To powinno dzialac migusiem -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 27.10.2015 Ostrzeżenie: (0%) ![]() ![]() |
Sądzę, że okolo 10 000.
Ten post edytował Userr 10.03.2017, 13:06:02 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
To dla bazy cale nic. Zaloz poprostu index na to pole i po sprawie
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Pytanie zasadnicze jak często te dane wyświetlasz.
Ale cache praktycznie zawsze jest dobrym pomysłem (no chyba że pokazujesz dane raz na 1h to w tedy bezsens) Cache robisz na danych z BD. Choć jak wolisz html teeeż można ale raczej nie zalecane. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 27.10.2015 Ostrzeżenie: (0%) ![]() ![]() |
Dane wyświetlane będą cały czas na stronie (a strona ma sporo użytkowników) i będą posortowane tylko raz na dzień. Więc pasowało mi to tutaj, żeby użyć cache – bo po co za każdym razem odwoływać się do bazy danych, skoro przez cały dzień na stronie będą wyświetlane te same dane.
Podałem trochę nieprecyzyjne dane w pierwszym poście. Chodzi o to, że liczby po których ma być sortowana tabela będą większe niż te przykładowe – będą miały 50 cyfr, a większe liczby sortuje się pewnie dłużej niż mniejsze. Poza tym, te dane na stronie będę wyświetlał używając stronicowania, czyli nie będę wyświetlał 10 000 wierszy na jednej stronie, tylko po np. 100 na podstronach i będzie lista do stronicowania, która pozwoli przechodzić użytkownikom po kolejnych podstronach. Czy przy takich założeniach lepiej założyć index na pole, czy lepiej użyć cachowania? A może i jedno i drugie rozwiązanie będzie dobre? Cache robisz na danych z BD. Choć jak wolisz html teeeż można ale raczej nie zalecane. Mogę oczywiście zrobić na danych z BD, ale dlaczego cachowanie html raczej nie jest zalecane? Ten post edytował Userr 10.03.2017, 14:16:16 |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
Ale baza danych też cache'uje wyniki
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 56 Pomógł: 0 Dołączył: 27.10.2015 Ostrzeżenie: (0%) ![]() ![]() |
Ale tak cachuje sama z siebie?
![]() W tym przypadku (sortowanie po kolumnie "numer") trzeba chyba dodać index do kolumny "numer", żeby sortowanie było dużo szybsze (i mniej obciążało serwer)? Jeżeli chciałbym dodać index do kolumny numer, to wystarczy jeden jedyny raz napisać poniższe zapytanie (np. zaraz po stworzeniu tej tabeli "osoby", nawet jeżeli nie ma tam jeszcze żadnych danych)? Cytat CREATE UNIQUE INDEX numer_malejaco ON osoby (numer) Pole do które dodaje się index nie musi być chyba polem kluczowym? Ten post edytował Userr 10.03.2017, 16:38:22 |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat W tym przypadku (sortowanie po kolumnie "numer") trzeba chyba dodać index do kolumny "numer", żeby sortowanie było dużo szybsze (i mniej obciążało serwer)? Tak, dokladnie o tym pisalem w moich dwoch wczesniejszych postach.I tak, tak powinno wygladac zapytanie wykonane tylko raz. I tak, zeby pole mialo index nie musi byc kluczem glownym -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 144 Dołączył: 22.12.2010 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 05:02 |