powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Архивация данных
14 сообщений из 14, страница 1 из 1
Архивация данных
    #39117942
Доброй ночи! В своей базе данных появилась необходимость архивировать данные по некоторым таблицам. Например рассмотрим две из них, где данные постоянно будут добавляться. В будущем этот рост таблиц приведет к замедлению выполнения запросов и добавления данных таблицы. Я решил создать копии этих таблиц и ежедневно, например в 12 часов ночи архивировать данные в другие таблицы, а основные очищать. Как это всё сделать я справлюсь. Вопрос вот в чем... Каким образом можно отключить пользователей на момент архивации? Потому что если данные будут архивироваться в тот момент, когда юзер инсертит - будут большие проблемы, так как таблицы связаны между собой. И когда в первой уже архивация закончится и данные потрутся их основной таблицы - нарушится целостность бд. Сразу скажу, что пользователи хранятся в отдельной таблице и потому их коннекты отрубить не получится. Может быть есть вариант с временной блокировкой тех таблиц, архивация которых будет происходить с отменой транзакции, если кто-то находится в процессе внесения данных? Подскажите пожалуйста свои идеи. Что в таком случае правильнее всего применить. Спасибо!
...
Рейтинг: 0 / 0
Архивация данных
    #39117967
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений СтронгВ будущем этот рост таблиц приведет к замедлению выполнения запросов и добавления данных таблицы.Это почему же?
...
Рейтинг: 0 / 0
Архивация данных
    #39118356
miksoft, Ну ведь обычный запрос подразумевает перебор данных. И разница искать в 100 записях или в 1 000 000 - повлияет на скорость. Или я чего-то не знаю?)
...
Рейтинг: 0 / 0
Архивация данных
    #39118365
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений СтронгИли я чего-то не знаю?)Да :)
...
Рейтинг: 0 / 0
Архивация данных
    #39118373
tanglir,

Т.е. ты хочешь сказать, что объем таблицы не влияет на скорость выборки данных?
...
Рейтинг: 0 / 0
Архивация данных
    #39118376
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет :)
...
Рейтинг: 0 / 0
Архивация данных
    #39118378
tanglir,

Ну вот и я о том же. Поля, по которым происходит поиск - проиндексированы. Но тем не менее таблица будет постоянно расти и нужно переносить данные.
...
Рейтинг: 0 / 0
Архивация данных
    #39118390
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Стронгтаблица будет постоянно расти и нужно переносить данные.
Каков размер одной записи? Какой прогнозируется объём в год (в миллионах записей)?
...
Рейтинг: 0 / 0
Архивация данных
    #39118395
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений СтронгНу ведь обычный запрос подразумевает перебор данныхОбычно - нет, не подразумевает.
...
Рейтинг: 0 / 0
Архивация данных
    #39118410
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE admin_db.trensostav (
  id int(11) NOT NULL AUTO_INCREMENT,
  sprupr_id int(11) DEFAULT NULL,
  klvp int(11) DEFAULT NULL,
  klvf int(11) DEFAULT NULL,
  vesp float DEFAULT NULL,
  vesf float DEFAULT NULL,
  spr_id int(11) DEFAULT,
  tren_id int(11) DEFAULT,
  setnb int(11) DEFAULT,
  nb int(11) DEFAULT,
  sec int(11) DEFAULT,
  us_id int(11) DEFAULT,
  PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 1
AVG_ROW_LENGTH = 910
CHARACTER SET utf8
COLLATE utf8_general_ci;



Таблица создана по всем хорошим правилам, которая в себе хранит идентификаторы записей других таблиц, поэтому не имеет текстовых полей. Какое количество в год... Сложно сказать... Всё зависит от количества пользователей. Но один пользователь в день в данную таблицу сложит минимум 20 записей, максимум - 50. Итого в год получаем 18250 от одного юзера. А пользователей может быть и около 1000 человек в лёгкую. Получится в год уже 18 250 000.
...
Рейтинг: 0 / 0
Архивация данных
    #39118415
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений СтронгТаблица создана по всем хорошим правилам, которая в себе хранит идентификаторы записей других таблиц, поэтому не имеет текстовых полей.Странные какие-то правила.
Может, речь идет не о "неимении текстовых полей", а о нормализации?
Евгений СтронгПолучится в год уже 18 250 000.Это не так уж и много.
Я бы предложил подождать этот годик, посмотреть во что по факту это выльется, оптимизировать запросы, которые возникнут за это время, а уж потом думать о разбиении таблиц и прочих подобных мерах.
...
Рейтинг: 0 / 0
Архивация данных
    #39118436
miksoft,

Я имею ввиду, что та таблица, по которой будет происходить выборка имеет лишь числовые значение, что ускорит поиск данных. То бишь в запросах не будет никаких like. И сама таблица будет мала по объему. Ну а пользователь будет видеть в конечном запросе результат трёх таблиц, такого вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
  trensostav.*,
  sprupr.gruppa,
  sprupr.tp,
  sprupr.upr,
  spr.status,
  spr.tp
FROM trensostav
  INNER JOIN sprupr
    ON trensostav.sprupr_id = sprupr.id
  INNER JOIN spr
    ON trensostav.spr_id = spr.id



Ещё в данной таблице будет отрабатывать триггер на вставку и обновления данных. Но он конкретно касаться будет той записи, над которой происходит модификация. Думаю, что это никак не повлияет на производительность. В общем тогда сделаю, как ты советуешь. Пока никаких архиваций. Время покажет. Да и вот я подумал, даже если и архивировать данные, то каждый день это делать - перебор. Тут наверно достаточно будет и раз в 3 месяца, а может и в пол года.
...
Рейтинг: 0 / 0
Архивация данных
    #39118555
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Стронгпользователей может быть и около 1000 человек в лёгкую. Получится в год уже 18 250 000.
12 числовых полей, 20 миллионов записей? Лет пять как минимум об архивации можно даже не заботиться. А один раз в год сносить в архив записи пятилетней давности можно и вручную.
...
Рейтинг: 0 / 0
Архивация данных
    #39118558
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве одной из оптимизаций можете ввести партиционирование (скажем, по годам).
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Архивация данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]