Просмотр полной версии : поиск полей в большом кол-ве БД
GreenBear
18.08.2007, 20:11
в общем суть такая: допустим есть 5к БД мускул
есть скрипт, суть его такая -
1. он берет лист всех БД, доступных пользователя.
2. в цикле перебирает БД и достает оттуда таблицы.
3. из таблиц достает поля. Потом в цикле их перебирает. если есть соответствие в названии поля , то выводит результат.
ну это так, для общего ознакомления.
так вот, все работает замечательно при небольшом кол-во БД. но если их много - жопа полная.
пробовал снизить нагрузку слипом - но и тут проблема. поставить маленький - смысла 0, поставить большой - до 2 пришествия будем ждать.
кто решал подобные проблемы.. можно ли как?
ты не пробовал обрабатывать отдельно каждую таблицу?
while()
{
работа только с одной таблицей и ее данными и только в этом цикле.....или я тя не правильно понял
}
или проблема не в этом?или это бред)
>>2. в цикле перебирает БД
>>но если их много - жопа полная.
не понимаю о какой нагрузке идет речь
GreenBear
18.08.2007, 20:36
сложи БД, таблицы, поля...
GreenBear
18.08.2007, 20:42
или проблема не в этом?
они и идут в обработку по порядку. 1 таблица 1 бд, 2 таблица 1 бд,... 20 таблица 4000 бд.
-=lebed=-
18.08.2007, 20:52
3. из таблиц достает поля. Потом в цикле их перебирает. если есть соответствие в названии поля , то выводит результат.
Т.е ищем конкретное называние поля и надо на выходе получить название базы и таблицы в ней? или вывести все значения совпавшего поля из всех таблиц и баз в один список? Так?
GreenBear
18.08.2007, 20:58
если поле совпало, то мне нужно название таблицы, бд и самого поля.
это то ерунда.. у меня проблема с тем, что она виснет на большом кол-во бд.
наверное единственное возможное - после перебора 200-400 бд усыплять скрипт на чуть-чуть.
-=lebed=-
18.08.2007, 21:20
если поле совпало, то мне нужно название таблицы, бд и самого поля.
это то ерунда.. у меня проблема с тем, что она виснет на большом кол-во бд.
наверное единственное возможное - после перебора 200-400 бд усыплять скрипт на чуть-чуть.
Имхо, чтоб не висло (не было dos) запросами к базам их надо предварительно сдампить в текстовые файлы и осуществлять поиск нужного поля в них...
GreenBear
18.08.2007, 21:46
дело в том, чтобы их сдапмить - нужно сначала их получить =)
[53x]Shadow
18.08.2007, 22:12
дело в том, чтобы их сдапмить - нужно сначала их получить =)
Смысл усыплять скрипт, если идет последовательный перебор, а не распределенный? В чем выражается зависание?
FithShist
19.08.2007, 03:43
по возможности делить на массивы, дампить, чтоб работать с минимумом данных в запросах.
дело в том, чтобы их сдапмить - нужно сначала их получить =)
Если ты запускаешь скрипт непосредственно на сервере и там много места, можно получить названия баз и каждую сдампить в цикле целиком(такой скрипт давно написан), а в файле уже искать и вынимать, имхо херня, ибо бд могут быть больших объёмов, а так же вхождение заданого текста будет и данных которые лежат в таблице.
Так что тот вариант который ты предложил вначале лучший, как ни крути.
Кстати, если мускл ветки с Information_schema, то можно заселектить название всех баз и потом делать общий селект всех таблиц, полей и схем из INFORMATION_SCHEMA.STATISTICS
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot