время выполнения операторов UPDATE в php скрипте до БД mysql

РЕДАКТИРОВАННЫЙ РЕГЕКС на вопрос комментария

Я ломаю голову, пытаясь ускорить этот скрипт на моем сервере MySQL. Он работает под управлением Ubuntu, и я следовал советам каждой статьи по настройке my.cnf, что касается innodb:

innodb-flush-method            = O_DIRECT
innodb-log-files-in-group      = 2
innodb-log-file-size           = 256M
innodb-flush-log-at-trx-commit = 0
innodb-file-per-table          = 1
innodb-buffer-pool-size        = 6G

аппаратное обеспечение на сервере немного старое, но оно имеет терабайтный жесткий диск и 8 ГБ оперативной памяти. Этот же код может пройти более миллиона строк менее чем за 2 минуты на моем MacBook Pro …. единственная проблема может быть аппаратная? На настройке моего сервера это занимает более часа. Ниже приведен PHP, я просто пытаюсь удалить любой альфа-символ из 4 столбцов. Каждый из этих столбцов индексируется, но даже попытка отбросить индексы перед каждым обновлением, похоже, не вносит никаких изменений.

 $cleanSelect = mysqli_query($conn,"SELECT id, cleanShipment, cleanBOL, cleanInvoice, cleanBatch from MASTER_dups where
division in (select division from MASTER_import)
AND (cleanShipment REGEXP '[A-Za-z]'
OR cleanInvoice REGEXP '[A-Za-z]'
OR cleanBatch REGEXP '[A-Za-z]'
OR cleanBOL REGEXP '[A-Za-z]')");
while ($row = mysqli_fetch_array($cleanSelect)) {
$id =  $row['id'];
$cleanShipment =  $row['cleanShipment'];
$cleanBOL =  $row['cleanBOL'];
$cleanBatch =  $row['cleanBatch'];
$cleanInvoice =  $row['cleanInvoice'];

$pattern = '/[A-Za-z]/';

$cleanShipment = preg_replace($pattern, '', $row['cleanShipment']);
$cleanBOL = preg_replace($pattern, '', $row['cleanBOL']);
$cleanBatch = preg_replace($pattern, '', $row['cleanBatch']);
$cleanInvoice = preg_replace($pattern, '', $row['cleanInvoice']);

$cleanShipment = !empty($cleanShipment) ? "$cleanShipment" : "";
$cleanBOL = !empty($cleanBOL) ? "$cleanBOL" : "";
$cleanBatch = !empty($cleanBatch) ? "$cleanBatch" : "";
$cleanInvoice = !empty($cleanInvoice) ? "$cleanInvoice" : "";


$updateMasterDups =
"UPDATE MASTER_dups set cleanShipment = '$cleanShipment',
cleanBOL = '$cleanBOL',
cleanBatch = '$cleanBatch',
cleanInvoice = '$cleanInvoice'
where id = $id";

if (!mysqli_query($conn,$updateMasterDups))
{
echo("Error description: " . mysqli_error($conn)."<br>".$updateMasterDups."<br>");
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]