TLENS » 2014.05.24 02:23

В общем решил замутить у себя асинхронные запросы к базе MySQL Ожидал значительное ускорение но ожидания не оправдались.
Значит проверил стандартный запрос SELECT * FROM `video` у меня занимает 0.4 сек. Я так подумал что десять таких запросов в асинхронном режиме не будут отдалятся от этой цифры. +/- потратится время на обработку десяти запросов.
Значит соорудил я такой скрипт для теста

Код:

1
span style="color: #0000BB"><?phpconst NUBMER_TEST = 1;$mysqli = array();$flag = NUBMER_TEST ? MYSQLI_ASYNC : null;$mt = microtime(true);for ($i = 0; $i < 10; $i++) { $mysqli[$i] = new mysqli('p:localhost', 'www', '', 'content'); $mysqli[$i]->query('SELECT * FROM `video`', $flag);}echo (($mt2 = microtime(true)) - $mt) . PHP_EOL;if ($flag === null) exit;do { $links = $errors = $reject = array(); foreach ($mysqli as $link) { $links[] = $errors[] = $reject[] = $link; } if (!mysqli::poll($links, $errors, $reject, 1)) { continue; } foreach ($links as $link) { if ($result = $link->reap_async_query()) { //var_dump($result); if (is_object($result)) $result->free(); } else die(sprintf("MySQLi Error: %s", $link->error)); $processed++; }} while ($processed < count($mysqli));echo (($mt3 = microtime(true)) - $mt2) . PHP_EOL;

В общем я обезнадежился( При выполнении SELECT 1 AS val, SLEEP(1) as sleep разумеется прирост есть. Но я так понимаю в выборе всех видео время уходит на саму выборку т.е. здесь cpu не простаивает?

TLENS » 2014.05.24 16:02

Я так понимаю выиграть можно если буду подключатся к разным серверам?

Gemorroj » 2014.05.25 10:39

TLENS, сложно сказать...) если сам запрос выполняется 0.4 сек, то что по поводу оптимизации самого запроса? Кэширвоания результатов?

TLENS » 2014.05.25 17:25

Gemorroj написал:

TLENS, сложно сказать...) если сам запрос выполняется 0.4 сек, то что по поводу оптимизации самого запроса? Кэширвоания результатов?

Это тестовый запрос. для выборки всей базы.