Серия «ITшное»

Shared_buffers для очень большой БД

Вопрос:

Какое влияние на производительность СУБД окажет использование shared_buffer более 25% при размере базы данных 10TB и доступной памяти 1TB для нагрузки генерируемой pgbench ?

Ответ ChatPPG

При использовании shared_buffers более 25% от общего объема памяти, особенно в случае большой базы данных (10TB) и ограниченного объема доступной памяти (1TB), могут возникнуть следующие проблемы:

1. Двойное кэширование: Если размер shared_buffers превышает определенный порог, PostgreSQL может начать кэшировать данные, которые уже находятся в кэше операционной системы. Это приводит к тому, что одни и те же страницы данных хранятся в обоих кэшах, что ведет к избыточному использованию памяти и потенциально к снижению производительности.

2. Нагрузка на операционную систему: Если shared_buffers слишком велик, это может привести к тому, что операционная система начнет активно использовать swap-память, что значительно замедлит работу системы.

3. Затраты на инвалидацию буферов: После выполнения операций, таких как DROP TABLE, TRUNCATE или определенных команд COPY, PostgreSQL должен инвалидировать большое количество буферов. С увеличенным размером shared_buffers этот процесс может стать значительно более ресурсоемким и длительным.

4. Ограничения на использование памяти: В документации указано, что размер shared_buffers обычно не должен превышать 40% от общего объема памяти, так как PostgreSQL также полагается на кэш операционной системы для эффективной работы. [Memory Configuration](https://postgrespro.com/docs/postgrespro/15/runtime-config-r...)

Для оптимальной производительности при использовании pgbench и других нагрузочных тестов, рекомендуется настроить shared_buffers в пределах 25-40% от общего объема памяти. В вашем случае, с 1TB доступной памяти, размер shared_buffers может быть установлен в пределах 256-400GB.

Таким образом, использование shared_buffers более 25% от общего объема памяти может привести к снижению производительности из-за избыточного кэширования и увеличенных затрат на инвалидацию буферов.


Ответ DeepSeek

Использование `shared_buffers` более 25% от доступной памяти (1 ТБ) для СУБД PostgreSQL с базой данных 10 ТБ и нагрузкой от `pgbench` может оказать **неоднозначное или даже негативное влияние** на производительность. Разберем ключевые аспекты:

### 1. **Теоретические рекомендации PostgreSQL**:
- Официальная документация советует выделять для `shared_buffers` **15-25% от общей RAM**. Для 1 ТБ это 256 ГБ.
- Превышение этого лимита (например, 512 ГБ или 768 ГБ) редко дает выгоду и часто вредит из-за архитектурных особенностей PostgreSQL.

### 2. **Риски при превышении 25%**:
- **Двойное кэширование**:
- PostgreSQL использует `shared_buffers` для кэша БД, но ОС (Linux) также кэширует файлы в **page cache**.
- При слишком больших `shared_buffers` данные дублируются в двух кэшах, что **расточительно** для памяти.
- Пример: При 512 ГБ в `shared_buffers` и 10 ТБ данных, ОС не сможет эффективно использовать оставшуюся RAM для page cache, замедляя операции чтения/записи.
- **Нехватка памяти для work_mem**:
- `pgbench` генерирует параллельные транзакции, требующие памяти для сортировки, JOIN и хэш-таблиц (`work_mem`).
- Если `shared_buffers` займет >50% RAM, рабочим процессам не хватит памяти. Это приведет к **свопу на диск** (temp files), что резко снизит производительность.
- **Накладные расходы управления**:
- Большой пул буферов увеличивает нагрузку на **менеджер буферов** (поиск свободных страниц, конкурентный доступ). Это особенно чувствительно при высокой частоте обновлений (UPDATE в `pgbench`).

### 3. **Особенности для больших БД (10 ТБ)**:
- **Кэш-попадания**: Даже при 512 ГБ `shared_buffers` в RAM поместится лишь **5% данных** (10 ТБ = 10240 ГБ). Если рабочее множество (активные данные) больше 512 ГБ, выгода от увеличения буфера будет **минимальна**.
- **Эффективность page cache**: При 1 ТБ RAM ОС может кэшировать до 768 ГБ данных (если `shared_buffers` = 256 ГБ). Для последовательных сканирований (частых в аналитических запросах) это эффективнее, чем `shared_buffers`.

### 4. **Результаты тестов pgbench**:
- Нагрузка `pgbench` (TPC-B-like) включает интенсивные запросы чтения/записи. Эксперименты показывают:
- Рост `shared_buffers` сверх 25% **не дает линейного прироста TPS** (транзакций в секунду).
- При превышении 40% RAM часто наблюдается **снижение TPS** на 10-30% из-за нехватки `work_mem` и накладных расходов.
- Пиковая производительность обычно достигается при **15-25%** для машин с >64 ГБ RAM.

### 5. **Оптимальная конфигурация для 1 ТБ RAM**:
- **`shared_buffers`**: 256 ГБ (25%).
- **`work_mem`**: Выделить достаточно (напр., 1-2 ГБ на процесс), используя освободившуюся память.
- **`maintenance_work_mem`**: Увеличить для VACUUM/INDEXING (напр., 64 ГБ).
- **Кэш ОС**: Оставить ~768 ГБ для page cache — критично для больших таблиц.
- **Параметры диска**: Использовать SSD/NVMe, так как 10 ТБ не поместятся в RAM.

### Итог:
Увеличение `shared_buffers` > 25% (256 ГБ) для системы с 1 ТБ RAM и БД 10 ТБ:
- **✓ Возможен небольшой прирост**, если рабочее множество < `shared_buffers` и нагрузка — случайное чтение.
- **✗ Чаще всего приводит к снижению производительности** из-за нехватки памяти для `work_mem`, двойного кэширования и накладных расходов.

**Рекомендация**:
Придерживайтесь 25% (256 ГБ), оптимизируйте `work_mem` и file I/O. Тестируйте нагрузку `pgbench` с разными значениями `shared_buffers` (напр., 128 ГБ, 256 ГБ, 512 ГБ), отслеживая TPS, latency и использование диска (iostat). Для больших БД фокус — на эффективность дисков и баланс RAM между `shared_buffers` и кэшем ОС.


P.S. Однако , китайцы точно копают и исследуют тему производительности PostgreSQL - ответ китайской нейросети шире и полнее .


Показать полностью

О практическом применении нейросетей1

Вчера на телеканале "Культура" было интересное выступление профессора из Сколково по поводу нейросетей .
Интересно , да , разные модели , алгоритмы. В основном расказ шел о генерации изображений нейросетями. И о генерации изображений по текстовому описанию.
Но, как дошло дело практического применения обозначились всего две области относительно полезного применения :
1) Цифровизация образов культурного наследия.
2) Цифровизация и обработка старых чертежей.

И возникает закономерный вопрос старого циника:

И это всё? Ради этого все эти бюджеты и весь этот хайп про "искусственный интеллект"?Чтобы картинки рисовать ?

Может профессор , чем то не тем занимается и тратит время и бюджеты ?

Прозвучавшую тему о неком "творчестве и применении нейросетей в искусстве" , даже всерьез обсуждать не имеет смысла.Сразу вспоминается классическая цитата из "Незнайка на Луне" о современном искусстве.

0

Postgres Pro Machine

Интересное и перспективное направление. Но, те кто принимает решение вряд ли в ближайшее время обратят внимание.Очень ограниченный рынок . Текущие информационные системы созданы на базе старых платформ. Конечно же , переделывать никто не будет - нет бюджетов.


Postgres Pro Machine: +30% к мощности баз данных и восстановление из бэкапа на скорости 20 ТБ/ч

Представляем первую на российском рынке машину баз данных, которая объединит СУБД для работы с различными типами нагрузки.

В рамках Postgres Pro Machine из единого интерфейса можно:

🔹Управлять работой высоконагруженных транзакционных БД
🔹Горизонтально масштабировать базы данных большого размера
🔹Оркестрировать большое количество БД среднего размера
🔹Организовать работу с аналитическими запросами

⚡️За аппаратную часть отвечает Delta Computers. Postgres Pro Machine на заключительной стадии тестирований, пилотные внедрения запланированы на вторую половину 2025 года.

https://vk.com/wall-101507899_2107

Показать полностью

Интересно - а можно подать в суд на нейросеть за клевету и недобросовестную конкуренцию ?

Вопрос YandexGPT

А кто первый придумал использовать корреляционный анализ для оптимизации производительности СУБД PostgreSQL ?

Ответ, как бы покультурнее высказаться - обескуражил :

Я конечно сильно уважаю и регулярно контактирую со специалистами Postgres Professional, но, это я первый придумал , исследовал, провел эксперименты и опубликовал в интернете . Сначала на Хабре, затем и в настоящее время на Дзене.
Так, что отойдите , вас тут не стояло.

Вывод очень простой - надо в самое ближайшее время заняться официальной публикацией в официальном научном издании.
Рано или поздно , какой нибудь чайник или журналюга так и скажет - "это же Postgres Professional придумал, ты у них взял".

P.S.Ожидаемо DeepSeek не смог ответить на вопрос , китайцы ведь не обучались и не анализируют рунет.

P.P.S. В принципе , если найдется молодой юрист или журналист , желающий прославится на хайпе, наверное такие прецеденты скоро будет.
Звучит громко - "нейросеть проиграла иск о клевете."
Да и разрабы , в конце концов, научат таки сети фильтровать выдачи, чтобы на бабки не попасть.
Поживём увидим.

Показать полностью 5

Змея не кусает хвост , она ест свой хвост

Змея не кусает хвост , она ест свой хвост

Уроборос-многоножка — символ ближайших лет в обучении языковых моделей. Раньше информационный поток был линейно-иерархичным: от первоисточника через фильтры глухих телефонов и пропаганды достигал реципиента. Теперь круг замыкается — источником становится сам продукт переработки.

Количество генерированного или обработанного нейросетями контента лавинообразно растёт, имитация натурального даётся всё лучше — скоро будет совсем не отличить. Нейронки будут опираться в своих выдачах на контент, которые сгенерировали другие нейронки, опирающиеся на контент от третьих и так далее. Этакий информационный инцест — вырождение — информация смешивается со своими собственными производными.

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

А вот что дальше, когда нейроэкскрементов станет на порядки больше, чем исходного материала? На чём будут дообучаться нейронки последующих лет? И речь ведь не только про статьи или новости. Сегодня нейро-улучшайзеры встроены в интерфейсы современных смартфонов, юзеры радостно "улучшают" свои тексты, чтоб не напрягаться формулировками, авто-улучшают свои фоточки, чтоб не заниматься фотошопингом, программисты вайб-кодят в полный рост. И вот это всё нейроулучшенное попадёт в один общий котёл вместе с крупицами оригинального.

Но и производители достоверного и натурального тоже станут перед выбором. Какой смысл продолжать делать качественный контент, если юзеры даже не заходят к тебе на сайт, ограничиваясь выдачей нейро-ассистентов? Должна же быть какая-то выгода. Кто-то наверное будет продавать владельцам нейронок свой контент за деньги (честно-честно не генерили), а кто-то будет монетизироваться через намеренное искажение данных в нужную спонсорам сторону.

Очень будет интересно посмотреть, как человечество справится с этим. Меня не покидает ощущение, что так или иначе ему всё равно придётся закатать рукава и как следует вручную прибраться в своём инфополе. Garbage in — garbage out.

https://t.me/antonvolkov/317

Показать полностью 1

Каюсь грешен. Но , с другой стороны - может кому и пригодится . Значит - не такой уж и грех

Стало интересно - а как сейчас с материалами по статистическому анализу производительности СУБД ?
Год назад - практически ничего, кроме пары статей 5ти летней давности по мат.статистике на Хабре, не было . По PostgreSQL - вообще ничего не было.

Пусть нейросеть поищет и проанализирует.

И ведь нашла и проанализировала и выдала осмысленный результат:

Как тут не вспомнить классику

Из 4х ключевых источников : 3 ссылки на мои статьи , а одна это вообще основная тема в течении прошедшего года. Скоро будет доклад на конференциях по данной тематике.

Тем, кто будет после меня заниматься темой статистического анализа производительности СУБД PostgreSQL , будет проще - материалы и фундамент для исследований и развития уже есть.
И это хорошо. Надо развивать DBA из ремесла и алхимии в науку и инженерию.

P.S. А вот YandexGPT - не смог помочь.

Показать полностью 4
Отличная работа, все прочитано!