while(1) {
$PDO = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$PDO->exec("TRUNCATE TABLE fonbet");
foreach($data as $object) {
$sql = "INSERT INTO fonbet (id, password, куча полей) VALUES (:id, :password, куча значений)";
$query = $PDO->prepare($sql);
$query->execute(array(':id'=>$object->id, ':password'=>$object->password, куда соответствий));
}
}
Есть таблица ~100 строк, который обновляется примерно 2 раза в секунду. Поскольку данные разные, то приходится стирать ее и добавлять циклом данные. Проблема заключается в том, что после каждой такой операции в таблицу попадает от 0 до 100 процентов данных. Добавлю, что "куча полей" ~ 20.
Что касается нагрузки:
show processlist - не показывает очереди (субъективно, так как невозможно часто щелкать)
show status -
pastebin.com/jyKz83qS (верхние записи почему-то вообще не показывает)
top -
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2342 root 20 0 172m 34m 13m S 32.6 6.9 7:01.99 php
2248 mysql 20 0 890m 225m 15m S 6.3 45.7 0:54.46 mysqld
Буду рад любой помощи. Как минимум, мне кажется, что запрос можно составить более правильно.
UPD: Добавлю настройки my.cnf моего mysql-сервера -
pastebin.com/qdFeQdr3 (всего 512 мб оперативной памяти)