field поля и куча таблиц. Drupal 7

Главные вкладки

Аватар пользователя tilli tilli 13 ноября 2013 в 10:53

Привет.
У меня возникла проблема с огромным количеством таблиц.
1. При создании поля, друпал отправляет кучу запросов, отчего сайт просто падает на некоторое время, затем видимо все обрабатывает и возвращается. И это чтобы добавить одно новое поле столько проблем.
2. При удалении полей всегда выводится ошибка. Поле удаляется, но не сразу и приходится страницу перезагружать, потому что ошибка (оно удаляет и это главное, но это похоже на страшный глюк и по началу было неясно, удалилось что-то или нет?)
3. В бале куча таблиц типа: field_revision_ , field_deleted_ - зачем они? куда их столько? можно ли как-то их чистить? кроном они не удаляются сразу. Удаляются через долгое время.
4. Да и таблиц field_data_field_ очень много, это ж сколько запросов к базе при открытии материала. Каждое поле, маленький чекбоксик, а уже целая таблица. Можно это как-то оптимизировать? в друпал 6 же все красиво было, к чему столько лишних проблема в семерке?
5. После создания поля, допустим создаю текстовое, с трудом создаю, из-за причины пункта 1. Вдруг оказывается, что поле должно быть не просто текст, а длинный текст, или числа. Данных еще там нет, но поменять уже никак, нужно удалять поле и создавать новое... ну либо в базе править, что я сейчас делаю, так как сайт упадет на минут 10 при пересоздании поля, а сайт рабочий...

Комментарии

Аватар пользователя serega111 serega111 13 ноября 2013 в 11:01

ставьте devel и выводите лог запросов. Там можно проверить, какие запросы выполняются слишком долго.
Если у вас сайт падает целиком падает при создании поля, то может проблема в другом? Ведь друпал не может заблокировать доступ к БД, второй запрос к сайту должен открыть второе соединение с БД и загружать данные, которые нужны.

Аватар пользователя Koreychenko Koreychenko 13 ноября 2013 в 11:14

Это не баг это фича, дающая свободу. Но за свободу и легкость создания доп. полей нужно платить. В данном случае ресурсами.
Для нагруженных проектов рекомендую создавать собственные составные поля, используя Field API, таким образом, вы сможете создать 100500 полей, значения которых будут лежать в одной таблице. Естественно, все запросы к этим полям будут проходить быстрее, чем адовы выборки с кучей JOIN.

Аватар пользователя tilli tilli 13 ноября 2013 в 11:17

А количество таблиц меня одну смущает???

решение всех проблем на друпале: не работает что-то, установи еще один модуль, и пусть их будет больше...
Я его поставила, прослежу, да, но количество полей от этого не уменьшится!

Аватар пользователя tilli tilli 13 ноября 2013 в 11:19

Koreychenko, о, попробуем так...
Но теперь мне все поля пересоздавать придется? и данные переносить в базе вручную?

Аватар пользователя Chyvakoff Chyvakoff 13 ноября 2013 в 16:26

"tilli" wrote:
решение всех проблем на друпале: не работает что-то, установи еще один модуль

Полно вам...
Это очевидное решение только зелёного новичка. Не верите-спросите у инферны))