Приветствую!
Есть mysql-база на 3 млн строк. В каждой строке хранится некий json. Нужно пройтись по всем строкам, распарсить json-поле, проверить его на вхождение нужных строк и сделать массовый UPDATE в другие таблицы. Никогда не сталкивался с такими объемами, подскажите, как работать с переменными, массивами на php так, чтобы не положить сервер?
Есть ли практические ограничения на размер переменных? Если в массиве я храню пару гигабайт данных - это плохо?
Иногда скрипт посереди выполнения просто завершался. Есть подозрение, что операционная система его прекращала.
Сервер Centos, 2 ядра, 8gb памяти.
Упрощенный пример моего кода:
// выбираю 3 млн строк
$q = mysql_query("SELECT aid, param FROM tbl WHERE enabled=1");
while($r = mysql_fetch_array($q)){
$param_arr = htmlspecialchars_decode($r['param']);
if(!empty($param_arr)){
$param_arr = @unserialize($param_arr);
}
// проверяю массив на вхождение нужной строки
if(!empty($param_arr['Ширина'])){
// собираю строку для будущего INSERTа в БД
$str_for_insert_size[] = "('$aid', '123')";
}
}
// делаю массовый INSERT
mysql_query("INSERT INTO tbl_size (id_item, id_size) VALUES ".implode(',', $str_for_insert_size));