![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam taki problem, szukam skutecznego rozwiązania na stronicowanie miliona rekordów, poza samym strocniowaniem czasami występują warunki lub sortowanie względem pola. Klasa przeze mnie napisana do tej pory opierała się na liczeniu przed zapytaniem ilości wszystkich rekordów poprzez COUNT(1) FROM Dalczy ciąg zapytania...
Lecz przy milionie rekordów wydaje mi się to w ogóle nie optymalne bo samo wejście z pozycji skryptu w listowanie rekordów po 20 np. trwa długo mimo iż tylko ja to przeglądam i z bazy nie korzysta nikt inny. Jak Wy rozwiązujecie stronicowanie takiej ilości rekordów? Mam nadzieje że dobry dział, dawno tutaj nie zaglądałem. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Normalne stronicowanie jest niezależne od liczby rekordów. Czy ich jest 100 czy milion to dla stronicowania nie ma różnicy - przecież wyświetlasz na raz powiedzmy 20 rekordów. Skoro ci muli to masz nieoptymalne zapytania, złe indeksy.
-------------------- "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: 38 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Przyjrze się dokładnie temu chociaż raczej indeksy i zapytania są poprawne
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
1) Pokaż swój kod
2) Zrób EXPLAIN na zapytaniach i pokaż co zwraca -------------------- "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: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Dodam...
Przy stronicowaniu najczęściej serwer wykonuje sortowanie, więc istotna jest konfiguracja serwera i rozmiary buforów biorących w tym udział. Milion rekordów, to nie jest szczególnie dużo, ale domyślna konfiguracja może nie wystarczyć. Jak wygląda sortowanie w zapytaniu? ![]() |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
explain!
sortowanie wzgledem jakiejs kolumny? najprawdopodobniej : wymuszasz uzycie tabel tymczasowych, ktore przekraczaja rozmiar bufora, i idzie zapis na dysk. jaki silnik? myisam? innodb? kazda z nich zachowuje sie inaczej.... wiec nie dam ci bardziej precyzyjne odpowiedzi... j. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 38 Pomógł: 0 Dołączył: 11.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Sorry, że tak późno. Sinik myisam, ustawienia domyślne, Ogólnie nie dotyczy to problemu konkretnego skryptu, czy zapytania. Jest to problem ogólny. Jak to optymalnie zrobić i ustawić aby milion czy np 10 milionów rekordów nie stanowiły problemu. Możliwe że robie złe indeksy bo to chyba rozdział który trochę przegapiłem jeśli chodzi MySQL, a nigdzie nie mogę znaleźć dobrego objaśienia gdzie, kiedy i jak najlepiej je stosować...
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Sorry, że tak późno. Sinik myisam, ustawienia domyślne, Ogólnie nie dotyczy to problemu konkretnego skryptu, czy zapytania. Jest to problem ogólny. Jak to optymalnie zrobić i ustawić aby milion czy np 10 milionów rekordów nie stanowiły problemu. Możliwe że robie złe indeksy bo to chyba rozdział który trochę przegapiłem jeśli chodzi MySQL, a nigdzie nie mogę znaleźć dobrego objaśienia gdzie, kiedy i jak najlepiej je stosować... Indeksowanie jest kluczowym elementem jeśli chodzi o wydajność zapytań. Nie ma na to jednego wzoru czy szablonu i do każdego serwisu należy podchodzić indywidualnie. Nie masz szans na pomoc poprzez forum. Polecam książki np taką http://helion.pl/ksiazki/wysoko-wydajne-my...ling,wydmsq.htm Przypadek, gdy kilkaset tysięcy rekordów stronicuje się szybko, a po przekroczeniu jakiegoś progu następuje lawinowy spadek wydajności sugeruje jednak problem z konfiguracją serwera: Myślę, że najszybciej uzyskasz wskazówki i poprawę wydajności odpalając jakiś skrypt do optymalizacji https://github.com/rackerhacker/MySQLTuner-...r/mysqltuner.pl http://genomewiki.ucsc.edu/index.php/Tuning-primer.sh |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 20:08 |