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

Добрый день! подскажите где можно почитать про требования к ресурсам? конкретно для

каких объемов базы сколько нужно оперативки.
для разных типов использования базы.

13 ответов

31 просмотр

> подскажите где можно почитать про требования к ресурсам? Мне кажется, или такие рекомендации сводятся к "чем больше, тем лучше — пока всё, что нужно, не влезет"? ;) > конкретно для каких объемов базы сколько нужно оперативки. С учётом того, что при тех же объёмах, данных и типах использования размер "то, что нужно" может отличаться на два-три порядка (в зависимости от того, как спроектирована база и насколько хорошо написаны запросы), ответить на этот вопрос невозможно, IMHO.

Саша-Козлов Автор вопроса
Yaroslav Schekin
> подскажите где можно почитать про требования к р...

у пгтюн написано More information about "DB Type" setting: Web Application (web) Typically CPU-bound DB much smaller than RAM 90% or more simple queries Online Transaction Processing (oltp) Typically CPU- or I/O-bound DB slightly larger than RAM to 1TB 20-40% small data write queries Some long transactions and complex read queries Data Warehouse (dw) Typically I/O- or RAM-bound Large bulk loads of data Large complex reporting queries Also called "Decision Support" or "Business Intelligence" Desktop application Not a dedicated database A general workstation, perhaps for a developer вот откуда это ?

Саша Козлов
у пгтюн написано More information about "DB Type...

Это приблизительные описания типов БД. Если у Вас есть конкретная БД, то это помогает мало (см. про два-три порядка).

Саша-Козлов Автор вопроса
Yaroslav Schekin
Это приблизительные описания типов БД. Если у Вас ...

есть таблица которая ротируется в течении 3х месяцев: - всего примерно 1Г записей и порядка 1Т на диске - наполняются из 6 внешних ПГ со скоростью 1к записей в секунду - несколько запросов пользователей в секунду по первичному ключу - все старше 90 суток удаляется остальными таблицами пока можно пренебречь

Саша Козлов
есть таблица которая ротируется в течении 3х месяц...

> всего примерно 1Г записей и порядка 1Т на диске Это с учётом индексов? Да и вообще — может, проще будет показать \d, \dt+ и \di+ того, что относится к делу? > наполняются из 6 внешних ПГ со скоростью 1к записей в секунду Наполняются в каком порядке (произвольном? по первичному ключу? по времени?)? > несколько запросов пользователей в секунду по первичному ключу Опять-таки, к произвольным ключам? > все старше 90 суток удаляется А каким именно образом (ежедневно? или ещё чаще? или реже? просто DELETE или это партиционированная таблица (и DROP))?

Саша-Козлов Автор вопроса
Yaroslav Schekin
> всего примерно 1Г записей и порядка 1Т на диске ...

все еще на стадии и разработки. сейчас таблицы очищены CREATE TABLE public.core_rawcheck ( created_at timestamp NOT NULL, updated_at timestamp NOT NULL, ui numeric(30) NOT NULL, c_number int4 NOT NULL, issued_at timestamp NULL, doc_number int4 NULL, payment_amount numeric(100, 2) NULL, id int8 NULL, CONSTRAINT core_rawcheck_pkey PRIMARY KEY (ui) ); >Наполняются в каком порядке (произвольном? по первичному ключу? по времени?)? логическая репликация >Опять-таки, к произвольным ключам? поиск по произвольным ключам. ключ очень уникальный 16ти байтовый инт собственно задача системы - выдать пользователю найден ключ или нет. >А каким именно образом (ежедневно? или ещё чаще? или реже? пока, ежедневно, несколько раз, порциями. я не знаю как ее партиционировать если у меня ключ разбиения не участвует в поиске ((

Саша Козлов
все еще на стадии и разработки. сейчас таблицы очи...

CREATE TABLE public.core_rawcheck ( created_at timestamp NOT NULL, Сразу см. https://wiki.postgresql.org/wiki/Don%27t_Do_This#Don.27t_use_timestamp_.28without_time_zone.29 > логическая репликация Это вообще не отвечает на вопрос. ;) Суть моих вопросов в том, чтобы выяснить размер "то, что нужно", если что. И легче, когда записи поступают (и запрашиваются) хоть в каком-то порядке (по возрастанию времени или первичного ключа, например). От этого сильно зависит размер "то, что нужно" (того, чему лучше было бы быть в RAM). > поиск по произвольным ключам. ключ очень уникальный 16ти байтовый инт Хмм... но в таблице почему-то ui numeric(30)? > я не знаю как ее партиционировать если у меня ключ разбиения не участвует в поиске (( Эээ... ну и что? Партиционируют не для поиска, а чтобы улучшить maintenance, в норме. Т.е. можно было бы и по первичному ключу, если это поможет vacuum / analyze. И можно было бы рассмотреть возможность делать это по дате/времени, которое используется для принятия решения об удалении — можно было бы делать DROP / DETACH вместо DELETE. Но тут может быть проблема с ключом, безусловно (насколько важен именно такой?).

Саша-Козлов Автор вопроса
Yaroslav Schekin
CREATE TABLE public.core_rawcheck ( created_at tim...

полностью еще не заполняли. размер высчитали на пальцах исходя из таблиц доноров. и скорость их заполнения. они в сумме наполняются 600-1000 записей в секунду данные летят рандомно. если я разобью посуточно - это решит проблему удаления да но поиск тогда будет в 90 раздельных партициях но вообще я тут подумал что тогда я могу запустить 90 паралельных поисков ))) насколько ПГ будет этому рад непонятно

Саша Козлов
полностью еще не заполняли. размер высчитали на па...

> данные летят рандомно. Если вообще никаких закономерностей нет, то оптимальный размер RAM — это терабайт или даже больше. ;( Т.е. так у вас вся БД получается "горячей", нет? > но поиск тогда будет в 90 раздельных партициях Будет, а как же. Но если при этом производительность этих запросов будет приемлемой — so what? ;)

Саша-Козлов Автор вопроса
Yaroslav Schekin
> данные летят рандомно. Если вообще никаких зако...

вот этого я и боялся услышать ))) размер базы = размер рам мне заказчик выделил всего 16Г с круглыми глазами типо "нахрена те столько памяти" » Если вообще никаких закономерностей нет только одна = дата вставки. собственно да можно сделать горячую суточную партицию и это точно сильно решит вопрос с удалением »Но если при этом производительность этих запросов будет приемлемой — so what? ;) вот тут интересно что быстрее запрос в 1 таблице по единому индексу или 10 паралельный запросов в 10 партициях кстати про партиции. есть уже в ПГ14 автосоздание партиций?

Саша Козлов
вот этого я и боялся услышать ))) размер базы = ра...

> только одна = дата вставки. собственно да можно сделать горячую суточную партицию Тогда это, всё-таки, другое дело. Зависит от того, как читается, конечно (если чтение любого дня равновероятно, т.е. первичный ключ не коррелирует с датой/временем, и запрашиваются произвольные — то да, вся таблица "горячая", как её ни раскладывай по partitions). > вот тут интересно что быстрее То, что сделает PostgreSQL, если Вы его адекватно настроите и выполните этот запрос. ;) Т.е. "заморачиваться" ручным разбиением и т.п. тут вообще не стоит, мне кажется. > кстати про партиции. есть уже в ПГ14 автосоздание партиций? Нет.

Саша-Козлов Автор вопроса
Yaroslav Schekin
> только одна = дата вставки. собственно да можно ...

поиск свежего скорее более вероятен. -3 дня сильно более вероятен чем -50 дней думаю суточные партиции очень имеют место да а распределить поиск это уже кодом

Саша Козлов
поиск свежего скорее более вероятен. -3 дня сильн...

> поиск свежего скорее более вероятен. Совсем другое дело, да. > а распределить поиск это уже кодом Я выше имел в виду, что лучше, чем сам PostgreSQL, Вы это всё равно почти наверняка не сделаете (а вот времени впустую можете потратить много, и к тому же несложно и "накосить" в реализации (так, что получатся некорректные результаты поиска)).

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно 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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта