Tematy na forum Pro mogą zakładać jedynie moderatorzy. W otwartych tematach może pisać każdy, kto ma coś fachowego do powiedzenia. Wszystkie posty nie wnoszące nic do tematu będą natychmiast usuwane, a ich autorzy dostaną ostrzeżenie.
Jeśli uważasz, że jakiś temat jest warty dyskusji na tym forum, zgłoś go w temacie Propozycje.
Post
#1
|
|
|
Grupa: Moderatorzy Postów: 36 561 Pomógł: 6315 Dołączył: 27.12.2004 |
Zgodnie z życzeniem: "Profilowanie aplikacji".
Zachęcam do udziału w dyskusji (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 233 Pomógł: 9 Dołączył: 3.06.2007 Ostrzeżenie: (0%)
|
Cytat Jedynie ma znaczenie kolejność kolumn w indeksach wielokolumnowych, ale to indeksy dobiera się do zapytań, a nie na odwrót. nie mam wiedzy absolutnej na temat optymalizacji zapytań... co więcej jest ona dość nikła, dopiero wydrukowałem sobie z manuala MySQL co ciekawego napisali o optymalizacji i będę sobie to powoli przyswajał więc teraz aby się upewnić czy się rozumiemy załóżmy że mamy indeks na 3 polach w kolejności a, b, c a następnie zapytanie: Kod SELECT (...) WHERE a="1" AND b="2" AND c="3" i wtedy nasz indeks będzie działał, i teraz drugie zapytanie: Kod SELECT (...) WHERE b="2" AND c="3" AND a="1" i tutaj nasz indeks już nic nie da... jeśli mam rację to: Cytat Mianowicie mijasz się z prawdą twierdząc, że indeksowanie wymaga zmiany zapytań. jednak wymaga to zmiany zapytania gdyż jedynie o ten przypadek mi chodziło... i sytuacje w której niczego nieświadomy użytkownik pomyli sobie kolejność kolumn albo nawet nie będzie wiedział że to ma znaczenie i zrobi odwrotnie "bo tak" Cytat ale to indeksy dobiera się do zapytań, a nie na odwrót w tym momencie Twój projekt staje się jedynie rozwiązaniem połowicznym... gdyż projekt robisz jak rozumiem docelowo dla amatorów którzy nie mają pojęcia o indeksacji i ogólnie optymalizacji zapytań... jeśli tak to indeksy wielokolumnowe niewątpliwie stoją już na wyższym poziomie, a generalnie idea powinna być "trudne uprościć" a nie "łatwe uprościć"(to ew. przy okazji), przy jednokolumnowych indeksach (przy ich tworzeniu) to na dobrą sprawę "widzę że przez to polę wyszukuję często dane" => "robię indeks" (no ew. jeszcze kilka reguł, ale ta w sumie najprostsza), nie ma w tym zbyt wielkiej filozofii, a przynajmniej ja (zaznaczam że mam braki w tej dziedzinie, jak się wymądrzam to przepraszam i poprawcie mnie) nie widzę w tym większej filozofii, choć przydatnym narzędziem będą logi zapytań, ile czasu zajmuje zapytanie, tudzież stosunek czasu do ilości rekordów w tabeli bądź inne statystyki i analiza zapytania na poziomie abstrakcji bazy aby z klauzul WHERE, ORDER BY, GROUP BY, HAVING i chyba jeszcze jakiś wydobywał nazwy kolumn i weryfikował czy na danym polu jest indeks czy nie, oczywiście niekoniecznie w momencie wykonywania każdego zapytania poza tym niezależnie od indeksów wielokolumnowych podejrzewam że optymalizacja może mieć również związek z kolejnością w klauzuli WHERE, gdyż prawdopodobnie (choć może i nie) zachodzi tam "skracanie" warunku (nie pamiętam czy miało to jakąś fachową nazwę, a jeśli tak to jaką...), a czytanie warunku zachodzi z tego co wiem od lewej do prawej chodzi o to że jeśli będziemy mieli np. Kod SELECT ... WHERE 1=0 AND (inne warunki) 1=0 oczywiście nie ma być docelowym warunkiem, chodzi mi o to że programista przy pisaniu kodu ma świadomość, że coś często będzie fałszem lub prawdą i to wstawia na "pierwsze pozycje" serwer SQL prawdopodobnie wiersz odpuści już po pierwszym warunku 1=0 gdyż z góry będzie fałszywy bezwzględu jakie wartości przybiorą kolejne zdania logiczne natomiast gdy zamienimy kolejność: Kod SELECT ... WHERE (inne warunki) AND 1=0 serwer może sporo danych przewertować, stracić dużo zasobów a i tak w końcu wyjdzie że dany wiersz nas nie interesuję... w tego typu przypadkach Twoja klasa/funkcja/program/cokolwiek nie będzie miało już wiele do gadania bo są to dość skomplikowane zagadnienia zresztą to była tylko taka dygresja o znaczeniu kolejności no ale w sumie chyba wszystko można zaprogramować (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat A optymalizatory zapytań w RDBMS? szczerze mówiąc nie wiem, a nawet nie wiedziałem o ich istnieniu choć ich istnienie wydaję się być zrozumiałe... nie mniej podejrzewam że mają minimalne znaczenie dla efektywności zapytań, podobnie jak w kodach PHP, podobno Zend Optimizer zamienia $d++ na ++$d bo jest szybsze (nie wiem czy to prawda, tak gdzieś przeczytałem... mało ważne) jednak znaczenie takiej optymalizacji przy skopanym algrotymie jest tak nikłe że nawet niewarto o nim wspominać Cytat Słyszałeś o uczeniu maszynowym? AI? tak słyszałem, choć nie mam chwilowo pojęcia w jaki sposób działa (nie próbowałem się nawet nad tym bardziej zastanawiać), nie douczałem się w tej materii... nie mniej gdy o tym wspomniałeś odbieram wrażenie że to przerost formy nad treścią... i znacznie lepiej dla każdego kto potrzebuję optymalizacji będzie przeczytanie kilku stron o tym zagadnieniu niż skorzystaniu z takiej aplikacji, przynajmniej chwilowo taka moja opinia Cytat Plus tego taki, że programista nie zawsze ma dobre rozeznanie co i jak jest obciążone w bazie a więc potrzebujesz logów a niekoniecznie takiej aplikacji, a resztę robisz dalej "zdroworozsądkowo", a taka aplikacja może się zacząć "wymądrzać" co różne programy mają do siebie... co zaczyna być działaniem szkodliwym |
|
|
|
nospor Profilowanie aplikacji 27.03.2007, 16:03:15
Strzałek Myślę że śmiało możn... 27.03.2007, 20:04:01
Whisller W PHP Solution ostatnio ukazał się artykuł na tema... 5.04.2007, 17:44:13
rashid Luzne mysli profilerskie
1. Nie optymalizuj dopok... 23.04.2007, 16:04:42 
darektbg Cytat(rashid @ 23.04.2007, 17:04:42 )... 24.04.2007, 06:55:44 
rashid Cytat(darektbg @ 24.04.2007, 07:55:44... 24.04.2007, 12:45:51
athabus Wydaje mi się, że trudno nauczyć się profilowania ... 24.04.2007, 08:28:37
marast78 zanim zaczniecie używać jakichkolwiek benchmarków/... 1.05.2007, 12:08:40 
Jarod Cytat(marast78 @ 1.05.2007, 11:08:40 ... 1.05.2007, 14:10:55 
cicik Cytat(marast78 @ 1.05.2007, 13:08:40 ... 1.05.2007, 17:17:01 
rashid Cytat(cicik @ 1.05.2007, 18:17:01 ) T... 1.05.2007, 20:19:31
athabus Wydaje mi się, że jest to podejście od złej strony... 1.05.2007, 12:58:46
marast78 różnice są wszystko zależy od tego w jakiej wersji... 1.05.2007, 18:47:29 
cicik Cytat(marast78 @ 1.05.2007, 19:47:29 ... 1.05.2007, 19:09:13
sopel @marast78, to porównanie między php4 i php5 ma się... 1.05.2007, 19:03:40
marast78 nie chce prowadzić konwersacji na ten temat, chcia... 1.05.2007, 20:04:49
jastu Korzystam z xDebug ale dla zainteresowanych link 25.05.2007, 15:01:48
deirathe Ja też uważam że powinniśmy zwracać uwagę na to ja... 28.06.2007, 15:54:58
Sh4dow ja osobiscie nie zawsze mialem dostep do servera z... 3.07.2007, 14:43:02
athabus Sh4dow poruszył dosyć ciekawą kwestię, przez którą... 5.07.2007, 11:27:57
Krolik Właśnie - bardzo często problemem jest wydajność b... 3.10.2007, 11:52:58
NuLL Krolik - mowisz o wybieraniu sposobu indeksownia t... 3.10.2007, 12:04:13
Krolik Nie, mam na myśli generalnie dobór indeksów a nie ... 3.10.2007, 12:34:11
zimi nie bardzo to widzę...
musiałaby to być złożona kl... 3.10.2007, 20:51:55
Krolik Zimi, nie pytałem, czy to się da zrobić, tylko czy... 4.10.2007, 10:53:07
athabus Jak dla mnie sam pomysł aplikacji jest bardzo dobr... 4.10.2007, 12:57:06 
Krolik Cytat(zimi @ 4.10.2007, 21:38:40 ) za... 5.10.2007, 10:25:32
NuLL Krolik to pytanie dotyczy Postgres-a czy MySQLa ? ... 6.10.2007, 02:03:55
Krolik Pytanie dotyczy dowolnego RDBMS. I nie chodzi mi t... 6.10.2007, 09:37:05
SongoQ Padła informacja o sposobie dobierania indeksow i ... 15.10.2007, 17:53:02
DeyV @Krolik - dobre pytanie.
Niby takie proste, a jed... 22.10.2007, 23:20:46
Krolik Pytanie było specjalnie takie, żeby nie było jedno... 31.10.2007, 12:58:11 ![]() ![]() |
|
Aktualny czas: 4.12.2025 - 17:47 |