|
|
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Доброй ночи! В своей базе данных появилась необходимость архивировать данные по некоторым таблицам. Например рассмотрим две из них, где данные постоянно будут добавляться. В будущем этот рост таблиц приведет к замедлению выполнения запросов и добавления данных таблицы. Я решил создать копии этих таблиц и ежедневно, например в 12 часов ночи архивировать данные в другие таблицы, а основные очищать. Как это всё сделать я справлюсь. Вопрос вот в чем... Каким образом можно отключить пользователей на момент архивации? Потому что если данные будут архивироваться в тот момент, когда юзер инсертит - будут большие проблемы, так как таблицы связаны между собой. И когда в первой уже архивация закончится и данные потрутся их основной таблицы - нарушится целостность бд. Сразу скажу, что пользователи хранятся в отдельной таблице и потому их коннекты отрубить не получится. Может быть есть вариант с временной блокировкой тех таблиц, архивация которых будет происходить с отменой транзакции, если кто-то находится в процессе внесения данных? Подскажите пожалуйста свои идеи. Что в таком случае правильнее всего применить. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 03:02:25 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгВ будущем этот рост таблиц приведет к замедлению выполнения запросов и добавления данных таблицы.Это почему же? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 07:37:59 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
miksoft, Ну ведь обычный запрос подразумевает перебор данных. И разница искать в 100 записях или в 1 000 000 - повлияет на скорость. Или я чего-то не знаю?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 13:45:16 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгИли я чего-то не знаю?)Да :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 13:50:05 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
tanglir, Т.е. ты хочешь сказать, что объем таблицы не влияет на скорость выборки данных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 13:55:45 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
tanglir, Ну вот и я о том же. Поля, по которым происходит поиск - проиндексированы. Но тем не менее таблица будет постоянно расти и нужно переносить данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 13:57:53 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Евгений Стронгтаблица будет постоянно расти и нужно переносить данные. Каков размер одной записи? Какой прогнозируется объём в год (в миллионах записей)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 14:03:24 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгНу ведь обычный запрос подразумевает перебор данныхОбычно - нет, не подразумевает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 14:06:44 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Akina, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Таблица создана по всем хорошим правилам, которая в себе хранит идентификаторы записей других таблиц, поэтому не имеет текстовых полей. Какое количество в год... Сложно сказать... Всё зависит от количества пользователей. Но один пользователь в день в данную таблицу сложит минимум 20 записей, максимум - 50. Итого в год получаем 18250 от одного юзера. А пользователей может быть и около 1000 человек в лёгкую. Получится в год уже 18 250 000. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 14:16:23 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Евгений СтронгТаблица создана по всем хорошим правилам, которая в себе хранит идентификаторы записей других таблиц, поэтому не имеет текстовых полей.Странные какие-то правила. Может, речь идет не о "неимении текстовых полей", а о нормализации? Евгений СтронгПолучится в год уже 18 250 000.Это не так уж и много. Я бы предложил подождать этот годик, посмотреть во что по факту это выльется, оптимизировать запросы, которые возникнут за это время, а уж потом думать о разбиении таблиц и прочих подобных мерах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 14:20:54 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
miksoft, Я имею ввиду, что та таблица, по которой будет происходить выборка имеет лишь числовые значение, что ускорит поиск данных. То бишь в запросах не будет никаких like. И сама таблица будет мала по объему. Ну а пользователь будет видеть в конечном запросе результат трёх таблиц, такого вида: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ещё в данной таблице будет отрабатывать триггер на вставку и обновления данных. Но он конкретно касаться будет той записи, над которой происходит модификация. Думаю, что это никак не повлияет на производительность. В общем тогда сделаю, как ты советуешь. Пока никаких архиваций. Время покажет. Да и вот я подумал, даже если и архивировать данные, то каждый день это делать - перебор. Тут наверно достаточно будет и раз в 3 месяца, а может и в пол года. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 14:37:09 |
|
||
|
Архивация данных
|
|||
|---|---|---|---|
|
#18+
Евгений Стронгпользователей может быть и около 1000 человек в лёгкую. Получится в год уже 18 250 000. 12 числовых полей, 20 миллионов записей? Лет пять как минимум об архивации можно даже не заботиться. А один раз в год сносить в архив записи пятилетней давности можно и вручную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.12.2015, 15:55:40 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39118410&tid=1832429]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
| others: | 196ms |
| total: | 321ms |

| 0 / 0 |
