172 похожих чатов

Есть три нубских вопроса, но очень важных для полноты картины.

Нужно экспертное мнение )

1. Рассказали, что если постоянно записывать и удалять из БД данные, это чревато дефрагментацией БД и неконсистентностью. Мол, лучше помечать данные как удалённые, но фактически не удалять.

К примеру, у юзера появилось авто - в таблицу Cars - добавили запись.
Авто ушло - не удалять запись про машину, а пометить car_lost = true. Эта запись нам больше не понадобится никогда, но мы её не удаляем.

Так ли это? Почему так?

2. В контексте первого вопроса...
Если строки не удалять, а просто помечать как удалённые - нормально ли их перезаписывать актуальными данными?

У другого юзера появилась машина - перезаписываем любую строку у которой car_lost = true...
Дабы не разрасталась таблица...


3. Рассказали, что если таблица в БД достигает +- 10млн строк, то её пора чистить от ненужных данных.

Пример с машинами - удалить все строки у которых car_lost = true.

И что есть около 5 стратегий очистки. Запрос в гугл - "стратегии очистки БД" - и подобные - ничего вразумительного не дал. Может кто-то прояснить этот момент и может дать ссылку?

Буду признателен за мнение по любому вопросу!

34 ответов

25 просмотров

у вас даже требований к базе нету а вы уже думаете какой бы пожеще костыль вставить, ну такое

Если коротко, то это было так для Пг версии где-то 5й или 6й.... В начале 2000х.

Vitaliy S
А как сейчас?

Не заморачивайтесь. удаляйте и работайте как есть. Больше ничего нельзя сказать без информации по базе и нагрузке

Vitaliy-S Автор вопроса
Nikolay Underground
Все нормально

Т.е. удаление строк ничем таким страшным не грозит?

Vitaliy S
Т.е. удаление строк ничем таким страшным не грозит...

Гуглите MVCC, и вообще как работает Пг. Хотя-бы обзорную лекцию того-же Брюса Момжана.

Vitaliy-S Автор вопроса
Nikolay Underground
Если честно, очень странные вопросы

А я сразу предупредил, что нубские.))

1) Ну и что, если обновляется одно-два поля постоянно, то лучше их вынести в отдельную узеуйю таблицу (типа 2 НФ)

Vitaliy-S Автор вопроса
Nikolay Underground
Где их находите?

Та я напилил БД для текущего проекта. Первый раз в своей жизни. Вообще я фронтендщик, но так получилось...))) Товарищ посмотрел вчера и выдал мне вот это всё. Типа удалять не хорошо, дефрагментация и т.д..

3 - а кто сказал, что ненужные данные есть? У меня есть и на 500 млн, и все данные там нужные

Vitaliy S
Та я напилил БД для текущего проекта. Первый раз в...

начиная с 12го ПГ уже не так страшно. Обслуживание БД в том числе и индексы неблокирующее и уже многопоточное. Тут скорее вам дисковую подсистему нужно будет продумать

Vitaliy-S Автор вопроса
Dmitriy Sviridov
3 - а кто сказал, что ненужные данные есть? У меня...

Не нужные, это те, которые больше не понадобятся. Зачем их держать в БД, если можно сразу удалить... Имхо.

Vitaliy S
Та я напилил БД для текущего проекта. Первый раз в...

Вы скажите сколько у вас данных, какие они, как часто обновляются / выбираются, что с дисковой подсистемой для этого и т.д.

Vitaliy-S Автор вопроса
Vitaliy S
Ну так сказали, я хз)

Ну это бред. Скорее всего, он про оптимизацию запросов слышал мало, и у него на 10 млн начало проявляться снижение производительности - вот он и назвал поэтому такое число. А надо было всего лишь сделать EXPLAIN ANALYZE тормозящего запроса.

Vitaliy-S Автор вопроса
Warstone
Вы скажите сколько у вас данных, какие они, как ча...

Ожидамемая нагрузка - 10к пользователей одновременно. Это всё, что пока могу сказать. Просто не знаю других параметров.

Vitaliy S
Ожидамемая нагрузка - 10к пользователей одновремен...

Это ни о чём не говорит. Даже о количестве запросов к БД

Vitaliy S
Ожидамемая нагрузка - 10к пользователей одновремен...

Тогда узнайте характер. 10К пользователей могут сидеть и раз в час одну запись создавать

Vitaliy-S Автор вопроса
Dmitriy Sviridov
Это ни о чём не говорит. Даже о количестве запросо...

Согласен. Но ещё раз повторюсь - я с фронтенда и это мой первый опыт работы с БД. Простотнет компетентности в этом вопросе.

Vitaliy-S Автор вопроса
Warstone
Тогда узнайте характер. 10К пользователей могут си...

Каждый пользователь может создавать около 100 обращений в БДв день.

Vitaliy S
Согласен. Но ещё раз повторюсь - я с фронтенда и э...

А почему вы, кстати, так уверены, что там будет 10к юзеров одновременно? Такой траф получить не так-то просто

Vitaliy S
Каждый пользователь может создавать около 100 обра...

У вас нету нагрузки. Сотовый телефон за 10К справится с этим.

Vitaliy-S Автор вопроса
Dmitriy Sviridov
А почему вы, кстати, так уверены, что там будет 10...

Это пиковая нагрузка на которую я рассчитываю через определённое количество времени.

Vitaliy-S Автор вопроса
Warstone
У вас нету нагрузки. Сотовый телефон за 10К справи...

О! Понял. Тогда все вопросы снимаю. Всё будет видно по ходу работы. Всем спс!

Vitaliy-S Автор вопроса
Dmitriy Sviridov
Вы же понимаете, что это пальцем в небо?)

Да. Но точнее мне прлсто не с чего взять данные. Приложение ещё не запущено. Тут всё - мои гипотезы.

Vitaliy S
Это пиковая нагрузка на которую я рассчитываю чере...

Чтобы вы понимали... Вот у нас сейчас в пике 250К запросов в час. Это где-то 70 запросов в секунду, зная характер нагрузки - это 30-20 UPDATE'ов в секунду и 200-300 SELECT'ов в секунду. Это все крутится на одной тачке, где валяется еще не только наша база. Полет нормальный. Размер базы где-то 100-200Гб (это небольшая база по меркам Пг)

Vitaliy-S Автор вопроса
Warstone
Чтобы вы понимали... Вот у нас сейчас в пике 250К ...

О! Как будто увидел картинку с масштабом планет...))) Всё, я понял, что мне до таких объёмов ещё далеко.))

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта