projektuję dość dużą aplikację opartą o PHP i MySQL i zauważyłem, że wydajność leży... starałem się przyśpieszać maksymalnie wszystko, myśląc, że to wina PHP.
Okazało się, że problemem jest... ekstralmnie wolno działający MySQL.
Przeprowadziłem test, na tabeli:
CREATE TABLE IF NOT EXISTS `positions` ( `id` int NOT NULL AUTO_INCREMENT, `pid` INT NOT NULL DEFAULT '0', `loc_id` INT NOT NULL DEFAULT '0', `x` INT NOT NULL DEFAULT '0', `y` INT NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE (`pid`), INDEX (`loc_id`) );
Do tej tabeli dałem dosłownie jeden wpis, następnie wykonałem komendę:
UPDATE positions SET x=5, y=5 WHERE id=1
Czas wykonania wyniósł 0.15s.
Dlaczego MySQL potrzebuje tak monstrualną ilośc czasu do wykonania tak prostego zapytania na tabeli zawierjący pojedynczy rekord?
Od siebie dodam, że serwer MySQL na którym pracuje jest offline i dedykowany pod aplikację, więc na pewno nei jest winą przeciążenie ilością zapytań.
Akceptowalna ilość czasu na to zapytanie to max 0.01s.
Co mogę zrobić by to przyśpieszyć?