Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Mysql slow queries - problem
Forum PHP.pl > Forum > Przedszkole
konrados
Cześć,

Spotkała mnie dziwna rzecz: ostrzeżenie o mysql slow queries, dotyczący tabelki, w której tego problemu bym się raczej nie spodziewał.

Serwis ma parę tabel, w tym także parę takich z kilkunastoma tysiącami rekordów. W tych tabelach używałem między innymi typu varchar, przy czym dawałem index na te pola. Z tymi tabelami nie było problemów, problem był z inną, "variables", struktura wyglądała tak:

id, name (varchar), str (varchar), number (int)

Tabelka służyła do przechowywania różnych globalnych zmiennych, był np. rekord "global_hits" do przetrzymywania ogólnej liczby hits na całym serwisie, a problematyczna linijka wyglądała tak:

  1. //no $cur_hits coś tam zawiera (liczbę)
  2. mysql_query("UPDATE `variables` SET `number`='$cur_hits' WHERE name='global_hits'",$g_conn) or die(mysql_error());


Jak widać robię " WHERE name='global_hits' " przy czym zapomniałem dać indeks na pole "name". I to by być może tłumaczyło problem ze slow queries, gdyby nie to, że w tej tabeli łącznie były... 2 (słownie dwa) rekordy, w tym właśnie jeden gdzie name = 'global_hits'.

No i tu pytanie: czy właśnie ów brak indeksu na tym polu "name" mógł spowodować "slow queries", jeśli w tabelce były łącznie dwa rekordy?

Nie mogę tego sprawdzić empirycznie, bo serwis został chwilowo wyłączony przez firmę hostingową, a pytam, bo być może ten problem jeszcze gdzieś tam w kodzie występuje.
Hekko
Masz log z mysql slow queries?
Może to również świadczyć o chwilowej zadyszce serwera, wtedy nawet proste zapytania tam trafiają.
thek
Taka mała tabela nie powinna nawet zaszumieć, a co dopiero wisieć ponad sekundę (taki jest zazwyczaj limit dolny czasu od jakiego łapiesz się na slow queries). Ewidentnie wina firmy hostingowej i problem z bazą na serwerze. Niech zgadnę... home lub az? smile.gif Bo tam takie cyrki się dzieją. Sam miałem bardzo podobną sytuację, tylko że rekordów było 21 wink.gif
konrados
@Hekko No zadyszka serwera chyba by dała błędy/problemy dot. tych większych tabel? Szczególnie, że wysłali mi wiele ostrzeżeń na maila, każdy dotyczący tej samej tabeli. No ale, że byłem na urlopie to jakoś tak nie odebrałem.
Logów niestety nie mam.


@thek
Nie, żadna z polskich firm. Strona siedziała na hamerykańskim darmowym hostingu www.000webhost.com , dopiero miałem zamiar w końcu wymyślić domenę dla niej i przenieść na mój płatny hosting. Teraz z backupów starych na 2 miesiące będę musiał kopiować sad.gif

Ale skoro takie cyrki się dzieją na paru serwerach to może to jakiś problem z mysql? Może po prostu warto dawać indeks na wszystkie możliwe pola nawet jak tabela ma mieć < kilkadziesiąt rekordów?
Hekko
Różnie to bywa, może wycięli pierwsze z brzegu. Ewidentnie to może być problem z samym serwerem, szczególnie, że to darmówka. Znaleźli pseudo-powód aby Cię wywalić.
konrados
Ok, dzięki wam.
Chyba jednak poprawię to zanim wrzucę na inny serwer smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.