MySQL Хранилированная процедура с курсором против PHP [закрыто]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 MySQL Хранилированная процедура с курсором против PHP [закрыто]

Сообщение Anonymous »

У меня есть база данных с 1 таблицей с рядами, которые имеют (индексированное) TimeUtc, плавание ветровой скорости и поплавковое ветровое управление. Каждую минуту добавляется новая запись. < /P>
Чтобы получить среднюю скорость ветра, скажем, 1 час в php, я делаю, например, < /p>
$sql = "SELECT * FROM weatherdata WHERE TIMEUTC BETWEEN timeA AND timeAPlus1Hour ORDER BY TIMEUTC ASC";
$results = $conn->query($sql)->fetchAll(PDO::FETCH_ASSOC);
foreach($results as $row)
{
$counter++;
$windspeed = $row['WINDSPEED'];
$rad = deg2rad($row['WINDDIRECTION');
$sinSum += $windspeed * sin($rad);
$cosSum += $windspeed * cos($rad);
}
if ($counter!=0)
{
$avgWindspeed = sqrt($simSum * $simSum + $cosSum * $cosSum)/$counter;
$avgWinddirection = rad2deg(atan2($sinSum, $cosSum));
while ($avgWinddirection < 0)
{
$avgWinddirection += 360;
}
}
< /code>
Это работает явно быстро. DECLARE AVGWINDSPEED, AVGWINDDIRECTION, result, speed, direction FLOAT;
DECLARE done BOOL DEFAULT FALSE;
DECLARE myCursor CURSOR FOR SELECT WINDSPEED, WINDDIRECTION FROM weatherdata WHERE TIMEUTC >= startDateTime AND TIMEUTC
В PHP я называю хранимую процедуру таким образом: < /p>
$sql = 'CALL CalculateAverageWindspeed(?,?);';
$statement = $conn->prepare($sql);
$statement->bindParam(1, $someStartTime , PDO::PARAM_STR);
$statement->bindParam(2, $someStartTimePlus1Hour, PDO::PARAM_STR);
$statement->execute();
$results = $statement->fetch(PDO::FETCH_NUM);
$avgWindspeed = $results[0];
$avgWinddirection = $results[1];
$statement->closeCursor();
< /code>
Я пропустил фактический расчет из приведенного выше кода, так как это всего лишь какое -то векторное дополнение, связанное с грехом, и потому что это одинаково в обоих случаях, а не интересной части. < /p>
Код с сохраненной процедурой работает хорошо. Расчеты с/без сохраненных процедур дают одинаковые значения. Таким образом, работает код, это не проблема. Таким образом, в обоих случаях расчеты в конце концов выполняются на одном процессоре. Но там, где код PHP вряд ли использует процессор, при использовании хранимых процедур, которые я вижу в Docker, что нагрузка Skyrockets почти до 100% для расчетов. Я просто пытаюсь понять плюсы/минусы и ограничения хранимых процедур.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... sor-vs-php
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»