Здравствуйте. Будь те добры, посоветуйте как решить задачу.
Имею таблицы по 100 - 200 млн. записей. по 3 - 6 Гб. С выборкой и вставкой нет проблем, но вот переименовать столбец, добавить индекс и вообще любые манипуляции со структурой не возможно выполнить из-за 504 Gateway Time-out. Сервер не успевает выполнить за допустимое время (Порядка 5 минут)
База на хостинге Джуно.
MySQL
set_time_limit - ничего не меняет.
В голову приходит только один вариант, создать таблицу с нужной структурой и построчно перекопировать туда данные. - Но попахивает бредом.
Но наверняка есть более изящное решение?
_____________
Вовсе не бред, так и следует поступить. Создаёте чистую таблицу с нужными полями и импортируете данные из старой таблицы insert...select или дамп это уже не столь важно. И подумайте сразу о партицировании если оно не предусмотрено в старой таблице. Данная операция разовая тут все средства хороши лишь бы получилось задуманное.
_____________
Стимулятор ~yoomoney - 41001303250491
Valick Спасибо за ваш ответ. Буду пробовать. Партицирование - скорей всего не получится из-за характера данных. Нет логический разделений, не групп, не категорий, не дат.
_____________
Вот как оно!!! Хоть запрос и выдает 504 Gateway Time-out и хост банит меня за превышенный лимит нагрузки на MySQL, но MySQL не успокаивается на этом, и продолжает вносит изменения. И через час - другой изменения все же происходят. УРА!
Главное терпение. И делать паузы между попытками внести изменения.
_____________
sergeiss
3.02.2019 - 19:06
Цитата (Valick @ 3.02.2019 - 11:52) |
И подумайте сразу о партицировании если оно не предусмотрено в старой таблице. |
Подпишусь под этим.
Цитата (Susik @ 3.02.2019 - 12:30) |
Нет логический разделений, не групп, не категорий, не дат. |
Но при выборке всё равно же используются некоторые условия, я думаю? Вряд ли все миллионы записей сразу выбираются
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
Цитата (sergeiss @ 3.02.2019 - 15:06) |
Но при выборке всё равно же используются некоторые условия, я думаю? Вряд ли все миллионы записей сразу выбираются  |
Во общем так. Раньше не сталкивался с большими таблицами и партицированием не разу не занимался. Погуглил, и пришел к выводу, что это вроде разбитие одной логической таблицы на несколько виртуальных. И что бы таблицу разбить нужно за что то зацепиться. Допустим по (категориям товара, оглавлением в библиотеке, по жанрам в фильмах). И я так понял, что это должно учитываться при выборке. Но конкретно в моих таблицах описываются взаимосвязи тысячи объектов между собой и структурировать данные не получается (Ну точнее я не вижу как). Все объекты однотипные. Но за совет большое спасибо. Я обязательно вникну и буду использовать по возможности.
_____________
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.