Size: a a a

pgsql – PostgreSQL

2020 August 20

L

LA in pgsql – PostgreSQL
> Так какой размер данных-то?

пардон, забыл ответить - pgdata 36ГБ после вставки
источник

s

suchimauz in pgsql – PostgreSQL
Daniella Starchenko
Разные серверы ходят к одной БД. Спасибо, вы ответили на мой вопрос)
Пожалуйста:)
источник

L

LA in pgsql – PostgreSQL
одним COPY точно стоит попробовать, не подумал даже как-то
источник

L

LA in pgsql – PostgreSQL
а может есть ещё смысл убрать столбцы, которые пустые на вставке и нужны уже потом?
то есть уменьшить кол-во столбцов в таблице до минимума, а потом создать уже нужные, когда вставка пройдет?
источник

L

LA in pgsql – PostgreSQL
suchimauz
А если в несколько потоков пустить, такое вообще возможно в данной задаче?
в несколько потоков можно, но  в текущей реализации очень сложно (
но в любом случае походу переделывать уже
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
LA
> Так какой размер данных-то?

пардон, забыл ответить - pgdata 36ГБ после вставки
Хотя бы на время загрузки данных shared_buffers можно поставить побольше (3 Гб, например... и см. huge_pages).
А так, в документации есть целый раздел про подобные случаи (там есть ещё полезные советы, кроме тех, что тут уже были) — https://www.postgresql.org/docs/current/populate.html
источник

s

suchimauz in pgsql – PostgreSQL
Вообщем несколько потоков должны ускорить твою задачу, попробуй
источник

L

LA in pgsql – PostgreSQL
huge_pages = off?
источник

L

LA in pgsql – PostgreSQL
прочитал доку и не понимаю что лучше для меня )
источник

L

LA in pgsql – PostgreSQL
huge_pages (enum)
Определяет, будут ли огромные страницы запрашиваться из основной области общей памяти. Допустимые значения: try (по умолчанию), on и off. Когда параметр huge_pages равен try, сервер будет пытаться запрашивать огромные страницы, но если это ему не удастся, вернётся к стандартному поведению. Со значением on, если получить огромные страницы не удастся, сервер не будет запущен. Со значением off большие страницы не будут запрашиваться.

В настоящее время это поддерживается только в Linux и Windows. Во всех других системах значение try просто игнорируется.

В результате использования огромных страниц уменьшаются таблицы страниц, и процессор тратит меньше времени на управление памятью, что приводит к увеличению быстродействия. За более подробной информацией об использовании огромных страниц в Linux обратитесь к Подразделу 18.4.5.

Огромные страницы в Windows называются большими страницами. Чтобы использовать их, необходимо дать пользователю Windows, от имени которого работает PostgreSQL, право блокировать страницы. Для назначения пользователю этого права вы можете воспользоваться средством управления групповой политикой Windows (gpedit.msc). Чтобы сервер баз данных запускался в командной строке как отдельный процесс, а не как служба Windows, приглашение командной строки должно запускаться от имени администратора или должен быть отключён механизм UAC (User Access Control, Контроль учётных записей пользователей). Когда UAC включён, в обычном командном приглашении пользователь лишается права блокировать большие страницы в памяти.

Заметьте, что этот параметр влияет только на основную область общей памяти. В операционных системах, таких как Linux, FreeBSD и Illumos огромные страницы (также называемые «суперстраницами» или «большими» страницами) могут также автоматически использоваться при обычном выделении памяти, без явного запроса со стороны PostgreSQL. В Linux это называется «прозрачными огромными страницами» (Transparent Huge Pages, THP). Известно, что это приводит к снижению быстродействия PostgreSQL в некоторых системах Linux у ряда пользователей, поэтому использовать этот механизм в настоящее время не рекомендуется (в отличие от явного использования huge_pages).
источник

L

LA in pgsql – PostgreSQL
и ещё вопрос по поводу:

name_servers INTEGER[] NOT NULL,

я потом на него делаю GIN  индекс, но как раз хочется уйти от INTEGER ARRAY и придти к TEXT ARRAY, только вот есть затык - вчера пробовал сделать такое и у меня не работает оператор <@, ругается на: ERROR: operator does not exist: text[] <@ character varying[]

Может быть есть смысл использовать jsonb? Можно ли там делать поиск через похожие опреации (когда ищутся все значения в поле, например, {1,2} в поле {3,2,1} - заберет такую строку)?
источник
2020 August 21

A

Alexander in pgsql – PostgreSQL
LA
прочитал доку и не понимаю что лучше для меня )
Памяти сколько на железке и насколько жирные запросы?
источник

L

LA in pgsql – PostgreSQL
4ГБ рам, запрос там только 1 - это заливка данных через COPY кусками по 10к строк
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
LA
huge_pages = off?
Лучше on, и настроить их в системе (это было или в документации, или легко нагуглить, если что).
источник

L

LA in pgsql – PostgreSQL
LA
а может есть ещё смысл убрать столбцы, которые пустые на вставке и нужны уже потом?
то есть уменьшить кол-во столбцов в таблице до минимума, а потом создать уже нужные, когда вставка пройдет?
а вот это здравая мысль вообще?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
LA
и ещё вопрос по поводу:

name_servers INTEGER[] NOT NULL,

я потом на него делаю GIN  индекс, но как раз хочется уйти от INTEGER ARRAY и придти к TEXT ARRAY, только вот есть затык - вчера пробовал сделать такое и у меня не работает оператор <@, ругается на: ERROR: operator does not exist: text[] <@ character varying[]

Может быть есть смысл использовать jsonb? Можно ли там делать поиск через похожие опреации (когда ищутся все значения в поле, например, {1,2} в поле {3,2,1} - заберет такую строку)?
> сделать такое и у меня не работает оператор <@, ругается на

А потому что не надо использовать character varying. Давал же ссылку. ;)
источник

A

Alexander in pgsql – PostgreSQL
LA
4ГБ рам, запрос там только 1 - это заливка данных через COPY кусками по 10к строк
Тогда забей на hugepages.
источник

L

LA in pgsql – PostgreSQL
Yaroslav Schekin
> сделать такое и у меня не работает оператор <@, ругается на

А потому что не надо использовать character varying. Давал же ссылку. ;)
ссылку я увидел сегодня, а тестил вчера 😄

с jsonb что-то такое прокатит?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
LA
а вот это здравая мысль вообще?
Существенно Вы на этом не выиграете (тем более, что такие поля там только updated_at и deleted_at), мне кажется.
источник

L

LA in pgsql – PostgreSQL
да, я про них
источник