|
|
|
Своя функция дампа БД
|
|||
|---|---|---|---|
|
#18+
Всем привет. Честно, не уверен, что создал тему в нужном разделе. Поэтому если что, прошу прощения. Была задача написать свою функцию на языке программирования 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. А дальше вопрос: проиндексированы ли ее таблицы? Если нет, то это еще хуже! Итого: что можете посоветовать? "Не изобретать велосипед и использовать то, что уже сделано" - не катит. У меня есть задание и я должен его выполнить. А вот как оптимизировать функцию и заставить ее работать быстро, с учетом критичных требований, описанных выше + необходимости в индивидуальной настройке - я не знаю. Плиз хелп! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2014, 14:21:57 |
|
||
|
Своя функция дампа БД
|
|||
|---|---|---|---|
|
#18+
urukhayСуть в том, что при попытке запустить ее на хостинге, чтобы сделать дамп указанной БД ... ей не хватает времени на выполнение )))Увы, на моей практике такое бывает не так уж редко. В нашей конторе привыкли использовать dumper.php, однако, на больших базах при слабеньком хостинге он иногда срубается. Обычно удается в таких случаях воспользоваться штатным mysqldump. В принципе, можно наваять скрипт на любом ЯП и запускать его из консоли, где время жизни процессов в разы выше, чем при выполнении через вебсервер. Что посоветовать... выполнять весь объем работы относительно небольшими порциями. Впрочем, тут тоже можно нарваться... urukhayА вот как оптимизировать функцию и заставить ее работать быстро, с учетом критичных требований, описанных выше + необходимости в индивидуальной настройке - я не знаю.Думаю, вряд ли удастся сделать что-то более эффективное по производительности и экономичности использования ресурсов в сравнении со штатными средствами. Полагаю, тут нужно по максимуму задействовать штатные средства. А функция пусть их вызывает и дорабатывает результат их работы под требования красявости (ума не приложу, кому и зачем это могло понадобиться) - поправить регистр, отступы, что-то еще - в общем, формирует "товарный вид". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2014, 17:01:20 |
|
||
|
Своя функция дампа БД
|
|||
|---|---|---|---|
|
#18+
Задача слишком общая и неопределенная. Поэтому и совет общий - разбивайте по частям, замеряйте время каждой части, выявляйте узкие места. Узкие места либо ускоряйте, либо выкидывайте целиком (самый быстрый способ что-то сделать - не делать этого вовсе). Те части, с которыми не справляетесь - показывайте нам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2014, 17:04:07 |
|
||
|
Своя функция дампа БД
|
|||
|---|---|---|---|
|
#18+
miksoft, >> самый быстрый способ что-то сделать - >> не делать этого вовсе угу, я примерно такию мыслю вычитал у Тома Кайта... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2014, 17:09:13 |
|
||
|
Своя функция дампа БД
|
|||
|---|---|---|---|
|
#18+
javajdbcmiksoft, >> самый быстрый способ что-то сделать - >> не делать этого вовсе угу, я примерно такию мыслю вычитал у Тома Кайта...Он тоже в этом не оригинален :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2014, 17:15:15 |
|
||
|
Своя функция дампа БД
|
|||
|---|---|---|---|
|
#18+
urukhayИтого: что можете посоветовать? "Не изобретать велосипед и использовать то, что уже сделано" - не катит. У меня есть задание и я должен его выполнить. А вот как оптимизировать функцию и заставить ее работать быстро, с учетом критичных требований, описанных выше + необходимости в индивидуальной настройке - я не знаю. Твоя задача, получив такое задание, объяснить, что есть штатные решения данной проблемы, и их именно и нужно испльзовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2014, 13:35:09 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38793271&tid=1834001]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
90ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 409ms |

| 0 / 0 |
