powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Своя функция дампа БД
6 сообщений из 6, страница 1 из 1
Своя функция дампа БД
    #38792975
urukhay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Честно, не уверен, что создал тему в нужном разделе.
Поэтому если что, прошу прощения.

Была задача написать свою функцию на языке программирования PHP, которая осуществляла бы дамп указанной БД.
Естественно, есть уже готовые решения (тот же pma и другие), которые позволяют решить данную задачу.
Но со стороны руководства было дано задание, нужно выполнять.

Функция работала по следующему алгоритму (кратко):
1. Получаем все таблицы указанной БД
2. По каждой таблице получаем все столбцы
3. По каждой таблице получаем все индексы, ключи и констрейнты
4. По каждой таблице формируем запрос create table и пишем его в файл.
Это очень кратко. По своей функциональности и обилию настроек функция получилась богаче, чем на том же pma.
Но суть не в этом.

Суть в том, что при попытке запустить ее на хостинге, чтобы сделать дамп указанной БД ... ей не хватает времени на выполнение )))
От show create table пришлось отказаться по следующим причинам:
1. При разных версиях mysql она выдает выражения sql в разных регистрах (например, где-то default '', а где-то DEFAULT ''). Это критично.
2. Важно было сделать свою стилистику запросов (отступы, табуляция и т.д.).

Была до этого более простая функция, работавшая на основе show create table - работала быстро. Новая в силу того, что в нее добавилось много дополнительных функций + теперь выборка идет напрямую из таблиц БД information_schema, функция на хостинге выполниться не успевает. А на локалке все ок. Наверное, это логично: на хостинге может быть сотни, тысячи и десятки тысяч баз данных. Соответственно, огромное число данных в базе information_schema. А дальше вопрос: проиндексированы ли ее таблицы? Если нет, то это еще хуже!

Итого: что можете посоветовать? "Не изобретать велосипед и использовать то, что уже сделано" - не катит. У меня есть задание и я должен его выполнить. А вот как оптимизировать функцию и заставить ее работать быстро, с учетом критичных требований, описанных выше + необходимости в индивидуальной настройке - я не знаю.

Плиз хелп!
...
Рейтинг: 0 / 0
Своя функция дампа БД
    #38793251
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayСуть в том, что при попытке запустить ее на хостинге, чтобы сделать дамп указанной БД ... ей не хватает времени на выполнение )))Увы, на моей практике такое бывает не так уж редко. В нашей конторе привыкли использовать dumper.php, однако, на больших базах при слабеньком хостинге он иногда срубается. Обычно удается в таких случаях воспользоваться штатным mysqldump.
В принципе, можно наваять скрипт на любом ЯП и запускать его из консоли, где время жизни процессов в разы выше, чем при выполнении через вебсервер.

Что посоветовать... выполнять весь объем работы относительно небольшими порциями. Впрочем, тут тоже можно нарваться...

urukhayА вот как оптимизировать функцию и заставить ее работать быстро, с учетом критичных требований, описанных выше + необходимости в индивидуальной настройке - я не знаю.Думаю, вряд ли удастся сделать что-то более эффективное по производительности и экономичности использования ресурсов в сравнении со штатными средствами. Полагаю, тут нужно по максимуму задействовать штатные средства. А функция пусть их вызывает и дорабатывает результат их работы под требования красявости (ума не приложу, кому и зачем это могло понадобиться) - поправить регистр, отступы, что-то еще - в общем, формирует "товарный вид".
...
Рейтинг: 0 / 0
Своя функция дампа БД
    #38793255
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача слишком общая и неопределенная.
Поэтому и совет общий - разбивайте по частям, замеряйте время каждой части, выявляйте узкие места. Узкие места либо ускоряйте, либо выкидывайте целиком (самый быстрый способ что-то сделать - не делать этого вовсе). Те части, с которыми не справляетесь - показывайте нам.
...
Рейтинг: 0 / 0
Своя функция дампа БД
    #38793264
Фотография javajdbc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

>> самый быстрый способ что-то сделать -
>> не делать этого вовсе

угу, я примерно такию мыслю вычитал у
Тома Кайта...
...
Рейтинг: 0 / 0
Своя функция дампа БД
    #38793271
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javajdbcmiksoft,

>> самый быстрый способ что-то сделать -
>> не делать этого вовсе

угу, я примерно такию мыслю вычитал у
Тома Кайта...Он тоже в этом не оригинален :)
...
Рейтинг: 0 / 0
Своя функция дампа БД
    #38793658
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urukhayИтого: что можете посоветовать? "Не изобретать велосипед и использовать то, что уже сделано" - не катит. У меня есть задание и я должен его выполнить. А вот как оптимизировать функцию и заставить ее работать быстро, с учетом критичных требований, описанных выше + необходимости в индивидуальной настройке - я не знаю.

Твоя задача, получив такое задание, объяснить, что есть штатные решения данной проблемы, и их именно и нужно испльзовать.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Своя функция дампа БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]