[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Перенос базы с изменением структуры таблиц
Vova
Здравствуйте! Господа, подскажите пожалуйста или направьте в каком направлении копать.
Досталась учесть переделывать проект, есть БД MySQL со своей структурой (около 30 таблиц со своими индексами и ключами), но структура на мой взгляд не правильная, вернее у меня есть другое решение схемы, а данных там около 10Gb. Как осуществить переезд данных в мои таблицы?
sergeiss
Однажды я переделывал структуру своей же БД, там тоже было много таблиц и много данных. Да еще и остановить работу БД на долгое время было нельзя. Максимум на пару часов. Долго думал, как и что сделать. В какой-то момент времени изменил структуру таблиц (добавил новые), организовал новые связи. Скрипты стали обращаться уже к новым таблицам. Свежие данные стали заливаться в новые таблицы. А затем уже запустил ПХП-скрипт, который переливал старые данные в новую структуру. Ясно дело, что не все таблицы менял, а только часть.
Всё это проделал в выходные, когда с данной БД никто не работает, только идет автоматическая заливка данных. Ну и, естественно, сначала многократно "прокрутил" в голове все шаги, чтобы при реальной обработке не было ошибок. По окончании обработки удалил старые таблицы.

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

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

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

user posted image
Vova
У меня есть возможность изменять все локально. Получается пишу на php запросы к старой БД, достаю данные порциями (например тысяч по 10) формирую SQL запрос и вставляю в новые таблицы (таблицы создаю заранее с индексами). А есть ли стандартные средства у MySQL которые без php позволят это сделать?
Игорь_Vasinsky
Цитата
формирую SQL запрос и вставляю в новые таблицы


удобней сразу insert select делать - без промежуточных результатов

Цитата
А есть ли стандартные средства у MySQL которые без php позволят это сделать


ну вот наверно возможность делать insert select и есть единственная)

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Vova
А как insert select покажет себя на 30 000 000 записей, где select берется join-ом из 3-х таблиц? Какие лучше применить настройки MySQL в конфиге для данной операции?
Игорь_Vasinsky
как как. как настоящий

это самое быстрое решение переноса.
можешь хранимую процедуру написать, возможно быстрей отработает.

но факт то что insert select быстрее промежуточных вариантов, курсоров или временных таблиц - это факт

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

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