Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Różny czas wykonywania zapytań na tej samej tabeli, Dwie takie same tabele 160tyś i 260tyś - znacząco różny czas wykonywan
Radek_1
post
Post #1





Grupa: Zarejestrowani
Postów: 54
Pomógł: 0
Dołączył: 9.09.2003
Skąd: Bełchatów

Ostrzeżenie: (0%)
-----


Mam dwie takie same tabelki w różnych bazach (ale ten sam serwer):
  1. CREATE TABLE IF NOT EXISTS `baza` (
  2. `UID` int(11) NOT NULL AUTO_INCREMENT,
  3. `name` varchar(30) CHARACTER SET latin1 NOT NULL,
  4. `lvl` int(3) DEFAULT NULL,
  5. `voc` varchar(30) CHARACTER SET latin1 DEFAULT NULL,
  6. `guild` varchar(30) DEFAULT NULL,
  7. `sex` varchar(7) DEFAULT NULL,
  8. `world` varchar(20) NOT NULL,
  9. `joined` int(10) NOT NULL,
  10. `lastlogin` int(10) DEFAULT NULL,
  11. `created_acc` int(10) DEFAULT NULL,
  12. `city` varchar(30) DEFAULT NULL,
  13. PRIMARY KEY (`UID`),
  14. KEY `name` (`name`),
  15. KEY `guild` (`guild`)
  16. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC AUTO_INCREMENT=185322 ;



W jednej jest 165tyś rekordów (23mb), w drugiej 270 tyś (33mb). Wykonuje paczki po 4 update na każdej bazie. Zapytanko wygląda mniej więcej tak:

  1. mysql_query("UPDATE baza SET lvl=".$record[level].", voc='".$record[vocation]."', guild='".$record[guild]."', sex='".$record[sex]."', lastlogin=".$record[lastlogin].", created_acc='".$record[created]."', city='".$record[residence]."' WHERE UID=".$record[uid]);


Najpierw baza z 165tyś rekordów i czasy wykonania 4 update w cyklu:
0.0023970603942871 sec
0.0020239353179932 sec
0.002047061920166 sec
0.0020139217376709 sec
0.0020439624786377 sec
0.0020511150360107 sec
0.0022640228271484 sec
0.0016040802001953 sec
0.0011930465698242 sec
0.0021450519561768 sec
0.0013589859008789 sec
0.0019218921661377 sec

Suma czasu dla 50 zapytań update: 4.3591480255127 sec


To samo na większej bazie (270tyś), też po 4 zapytania w cyklu:
0.012955188751221 sec
0.0023949146270752 sec
1.7737629413605 sec
0.16048979759216 sec
0.24561595916748 sec
0.15996599197388 sec
0.22124600410461 sec
0.26379299163818 sec
0.2989809513092 sec
0.18192505836487 sec
0.0041689872741699 sec
0.027604103088379 sec
0.53889012336731 sec

Suma dla 50 zapytań: 8.4705171585083 sec


Czym mogą być spowodowane tak duże rozbieżności w czasue wykonania tak prostego update? Różnica w ilości rekordów nie jest duża, zaledwie 100tyś. Co można zrobić aby poprawić efektywność zapytań?

Ten post edytował Radek_1 12.01.2013, 01:59:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Na rozbieżność nie mam pomysłu ale update możesz spróbować zmienić w jedno zapytanie mysql - na pewno się da.
W CI np. jest update_batch.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 17.02.2026 - 05:49