[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: 504 Gateway Time-out в большой бд MySQL
Susik
Здравствуйте. Будь те добры, посоветуйте как решить задачу.
Имею таблицы по 100 - 200 млн. записей. по 3 - 6 Гб. С выборкой и вставкой нет проблем, но вот переименовать столбец, добавить индекс и вообще любые манипуляции со структурой не возможно выполнить из-за 504 Gateway Time-out. Сервер не успевает выполнить за допустимое время (Порядка 5 минут)

База на хостинге Джуно.
MySQL
set_time_limit - ничего не меняет.

В голову приходит только один вариант, создать таблицу с нужной структурой и построчно перекопировать туда данные. - Но попахивает бредом.

Но наверняка есть более изящное решение?

_____________
Valick
Вовсе не бред, так и следует поступить. Создаёте чистую таблицу с нужными полями и импортируете данные из старой таблицы insert...select или дамп это уже не столь важно. И подумайте сразу о партицировании если оно не предусмотрено в старой таблице. Данная операция разовая тут все средства хороши лишь бы получилось задуманное.

_____________
Стимулятор ~yoomoney - 41001303250491
Susik
Valick Спасибо за ваш ответ. Буду пробовать. Партицирование - скорей всего не получится из-за характера данных. Нет логический разделений, не групп, не категорий, не дат.


_____________
Susik
Вот как оно!!! Хоть запрос и выдает 504 Gateway Time-out и хост банит меня за превышенный лимит нагрузки на MySQL, но MySQL не успокаивается на этом, и продолжает вносит изменения. И через час - другой изменения все же происходят. УРА!

Главное терпение. И делать паузы между попытками внести изменения.

_____________
sergeiss
Цитата (Valick @ 3.02.2019 - 11:52)
И подумайте сразу о партицировании если оно не предусмотрено в старой таблице.

Подпишусь под этим.

Цитата (Susik @ 3.02.2019 - 12:30)
Нет логический разделений, не групп, не категорий, не дат.

Но при выборке всё равно же используются некоторые условия, я думаю? Вряд ли все миллионы записей сразу выбираются smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Susik
Цитата (sergeiss @ 3.02.2019 - 15:06)
Но при выборке всё равно же используются некоторые условия, я думаю? Вряд ли все миллионы записей сразу выбираются smile.gif


Во общем так. Раньше не сталкивался с большими таблицами и партицированием не разу не занимался. Погуглил, и пришел к выводу, что это вроде разбитие одной логической таблицы на несколько виртуальных. И что бы таблицу разбить нужно за что то зацепиться. Допустим по (категориям товара, оглавлением в библиотеке, по жанрам в фильмах). И я так понял, что это должно учитываться при выборке. Но конкретно в моих таблицах описываются взаимосвязи тысячи объектов между собой и структурировать данные не получается (Ну точнее я не вижу как). Все объекты однотипные. Но за совет большое спасибо. Я обязательно вникну и буду использовать по возможности.

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

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.