Нужно экспертное мнение )
1. Рассказали, что если постоянно записывать и удалять из БД данные, это чревато дефрагментацией БД и неконсистентностью. Мол, лучше помечать данные как удалённые, но фактически не удалять.
К примеру, у юзера появилось авто - в таблицу Cars - добавили запись.
Авто ушло - не удалять запись про машину, а пометить car_lost = true. Эта запись нам больше не понадобится никогда, но мы её не удаляем.
Так ли это? Почему так?
2. В контексте первого вопроса...
Если строки не удалять, а просто помечать как удалённые - нормально ли их перезаписывать актуальными данными?
У другого юзера появилась машина - перезаписываем любую строку у которой car_lost = true...
Дабы не разрасталась таблица...
3. Рассказали, что если таблица в БД достигает +- 10млн строк, то её пора чистить от ненужных данных.
Пример с машинами - удалить все строки у которых car_lost = true.
И что есть около 5 стратегий очистки. Запрос в гугл - "стратегии очистки БД" - и подобные - ничего вразумительного не дал. Может кто-то прояснить этот момент и может дать ссылку?
Буду признателен за мнение по любому вопросу!
у вас даже требований к базе нету а вы уже думаете какой бы пожеще костыль вставить, ну такое
Если коротко, то это было так для Пг версии где-то 5й или 6й.... В начале 2000х.
Все нормально
Не заморачивайтесь. удаляйте и работайте как есть. Больше ничего нельзя сказать без информации по базе и нагрузке
Т.е. удаление строк ничем таким страшным не грозит?
Если честно, очень странные вопросы
Гуглите MVCC, и вообще как работает Пг. Хотя-бы обзорную лекцию того-же Брюса Момжана.
А я сразу предупредил, что нубские.))
Где их находите?
1) Ну и что, если обновляется одно-два поля постоянно, то лучше их вынести в отдельную узеуйю таблицу (типа 2 НФ)
Та я напилил БД для текущего проекта. Первый раз в своей жизни. Вообще я фронтендщик, но так получилось...))) Товарищ посмотрел вчера и выдал мне вот это всё. Типа удалять не хорошо, дефрагментация и т.д..
3 - а кто сказал, что ненужные данные есть? У меня есть и на 500 млн, и все данные там нужные
Ваш товарищ живет в 90х
Типа нет. Это как раз анти 2 НФ
начиная с 12го ПГ уже не так страшно. Обслуживание БД в том числе и индексы неблокирующее и уже многопоточное. Тут скорее вам дисковую подсистему нужно будет продумать
Не нужные, это те, которые больше не понадобятся. Зачем их держать в БД, если можно сразу удалить... Имхо.
Вы скажите сколько у вас данных, какие они, как часто обновляются / выбираются, что с дисковой подсистемой для этого и т.д.
Ок, а почему именно +- 10 млн? Почему не 20?
Ну так сказали, я хз)
Ну это бред. Скорее всего, он про оптимизацию запросов слышал мало, и у него на 10 млн начало проявляться снижение производительности - вот он и назвал поэтому такое число. А надо было всего лишь сделать EXPLAIN ANALYZE тормозящего запроса.
Ожидамемая нагрузка - 10к пользователей одновременно. Это всё, что пока могу сказать. Просто не знаю других параметров.
Это ни о чём не говорит. Даже о количестве запросов к БД
Тогда узнайте характер. 10К пользователей могут сидеть и раз в час одну запись создавать
Согласен. Но ещё раз повторюсь - я с фронтенда и это мой первый опыт работы с БД. Простотнет компетентности в этом вопросе.
Каждый пользователь может создавать около 100 обращений в БДв день.
А почему вы, кстати, так уверены, что там будет 10к юзеров одновременно? Такой траф получить не так-то просто
У вас нету нагрузки. Сотовый телефон за 10К справится с этим.
Это пиковая нагрузка на которую я рассчитываю через определённое количество времени.
О! Понял. Тогда все вопросы снимаю. Всё будет видно по ходу работы. Всем спс!
Вы же понимаете, что это пальцем в небо?)
Да. Но точнее мне прлсто не с чего взять данные. Приложение ещё не запущено. Тут всё - мои гипотезы.
Чтобы вы понимали... Вот у нас сейчас в пике 250К запросов в час. Это где-то 70 запросов в секунду, зная характер нагрузки - это 30-20 UPDATE'ов в секунду и 200-300 SELECT'ов в секунду. Это все крутится на одной тачке, где валяется еще не только наша база. Полет нормальный. Размер базы где-то 100-200Гб (это небольшая база по меркам Пг)
О! Как будто увидел картинку с масштабом планет...))) Всё, я понял, что мне до таких объёмов ещё далеко.))
Обсуждают сегодня