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

start [/forum/topic.php?fid=47&tablet=1&tid=1832429]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 204ms |
| total: | 353ms |

| 0 / 0 |
