|
|
|
| Подскажите, как можно удалить запись в таблице через несколько ней без вмешательства? Или если это под паролем вход, можно перед входом пользователя сделать проверку по дате? И если прошло дней пять например, то удалять...по другому никак? | |
|
|
|
|
|
|
|
для: xpom
(22.11.2011 в 01:13)
| | 1. Какая версия СУБД используется? Выше или ниже 5.1 (в ней можно задействовать планировщик заданий)?
2. Таблица часто подвергается изменениям? Нельзя задействовать триггер? | |
|
|
|
|
|
|
|
для: cheops
(22.11.2011 в 01:17)
| | на локальной машине использую версию 5.0.45 MySQL на хостинге возможно будет новее..
изменениям структуры таблица не часто подвергается изменениям..а данные в неё заносятся часто и удалять соответственно часто надо будет | |
|
|
|
|
|
|
|
для: xpom
(22.11.2011 в 13:57)
| | а как трригером это можно сделать?
или трригером не получится? | |
|
|
|
|
|
|
|
для: xpom
(22.11.2011 в 14:02)
| | Триггер, конечно, менее удобен, так как вы сможете привязать его только на INSERT/UPDATE/DELETE-запросы. Они у вас могут возникать не так часто и не в то время, как вам нужно. Или наоборот возникать слишком часто, а вам придется лопатить всю таблицу на каждый чих... планировщик заданий в этом плане гораздо более удобен. | |
|
|
|
|
|
|
|
для: cheops
(22.11.2011 в 15:04)
| | понятно..ну а если как я вариант думал, когда пользователь под свои логином заходит в определенную вкладку и тогда проверяется по дате, если старые данные имеются то удалить их, это сильно будет загружать работу?
Удаление я это думаю сделать, чтобы разгрузить таблицу, будет много строк и если много уже не нужных будет медленнее запросы выполнятся?
Вот и думаю как сделать или накапливать данные в таблице или как то чистить таблицу, где выиграю в производительности? | |
|
|
|
|
|
|
|
для: xpom
(22.11.2011 в 15:25)
| | Да неплохой вариант, только следует иметь в виду еще вот что.
1. Чем больше у вас будет таблица, тем медленнее будет выполняться операция DELETE.
2. Удаление один раз большого количества записей в любом случае быстрее, чем удаление небольшого количества записей большим количеством DELETE-запросов.
3. На момент удаления таблица блокируется. Если операция длительная, выстраивается большая очередь из желающих обратиться к таблице - все они держат оперативную память.
4. Пользователи имеют возможность приходить на сайт в часы пик, когда и так нагрузка велика - затевать в это время удаления, тем более массовые - самоубийство.
PS Просчитать заранее все довольно сложно, как правило, приходится чутко следить за системой и её реакцией. В общем при проектировании системы заложите в неё (если время и бюджет позволяет) возможность изменения механизмов удаления сообщений. Проблемы новой системы, как правило, в корне отличаются от проблем системы, обремененной тяжелой многолетней базы данных. | |
|
|
|
|
|
|
|
для: cheops
(22.11.2011 в 15:38)
| | Тогда добавим проверку, запрос SELECT (он не блокирует таблицу?) и проверим, если у пользователя есть старые сообщения и только в тот момент, когда пользователь оставляет сообщение, тогда удаляем старые записи...
Я думаю потом, если что мы эту часть сможем заменить какой то другим вариантом, если что то будет плохо работать | |
|
|
|
|
|
|
|
для: xpom
(22.11.2011 в 19:30)
| | >SELECT (он не блокирует таблицу?)
Нет, не блокирует.
>проверим, если у пользователя есть старые сообщения и только в тот момент, когда
>пользователь оставляет сообщение, тогда удаляем старые записи...
Можно, кстати, добавлять флаг в какое-нибудь скрытое поле формы добавления сообщения (если, она на этой же странице). | |
|
|
|
|
|
|
|
для: cheops
(22.11.2011 в 21:03)
| | тоже вариант | |
|
|
|