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

Всем привет. вопрос теоритический, задачу никакую не решаю. Я хочу

понять порядки пропускной способности PostgreSQL на запись: сколько максимально операций в секунду возможно при одинарных INSERT. Предвижу ответы про "много факторов". меня интересуют цифры которые вы видели. Т.е. именно понять порядки. Ясно что это не миллионы и не сотни тысяч. Насколько я понимаю из своего опыта, то типичная таблица с 10 колонками и индексами по 2-3 полям может заполнятся не быстрее чем 1000-1200 запросов в секунду. Какой у вас опыт? будем считать, что с железом все ок, оно какое надо и индексы влазят в память

21 ответов

176 просмотров

Вобще-то, сотни тысяч — как раз лимит, достижымый без выхода в "большой спорт". А 1200 в секунду — это или очень большые INSERT, или сломано что-то.

Ilya Anfimov
Вобще-то, сотни тысяч — как раз лимит, достижымый ...

Слушайте, а в порядке спортивного интереса, расскажете как таких цифр достичь теоретически? Знаю, что можно сделать таблицу, в которую я вставляю, unlogged и убедиться в отсутствии триггеров, ограничений на таблицу, индексов и т.д. Может быть, ещё можно писать в несколько сессий на стороне postgres/потоков на стороне оси. Да и если вы покидаете в меня ссылками, тоже буду благодарен)

Александр Едигарев
Слушайте, а в порядке спортивного интереса, расска...

>Может быть, ещё можно писать в несколько сессий на стороне postgres/потоков на стороне оси. Ну, разумеется, как ещё-то? Зачем вам постгрес, если параллельных воркеров нету... Не, ну тожэ можэт быть полезен — но тогда вообще странно ставить вопросы о скорости.

Александр Едигарев
Слушайте, а в порядке спортивного интереса, расска...

И да, unlogged и без индэксов — это ужэ "большой спорт". Опять не очень понятно, какая можэт быть практическая перспектива у таких достижэний.

Простейшая таблица без индексов, два поля, общая длина записи 32 kB на моем домашнем ноутбуке выдает 400 тысяч в секунду без всякого тюнинга и ухищрений в один поток (как то раз потребовалось оценить возможный потолок). Диск NVMe.

Валерий Фёдоров
Простейшая таблица без индексов, два поля, общая д...

А, без индэксов. Ой, ладно, да. Тожэ, правда, вероятно, не INSERT по одному — но да, такое можно добиться.

Ilya Anfimov
И да, unlogged и без индэксов — это ужэ "большой с...

Да не то чтобы я собирался заниматься бенчмарками, скорее задался вопросом "вдруг я чего-то не знаю"

Ilya Anfimov
И да, unlogged и без индэксов — это ужэ "большой с...

А на продакшене по сути логи-то и не нужны? Если база протестирована и ты полностью уверен что она не навернётся, отключение логирование даст прирост производительности.

Ilya Anfimov
>Может быть, ещё можно писать в несколько сессий н...

Окей, как вы достигаете такой скорости?) У меня приходится 3 * 26 + 3000 * 26 записей на таблицу в секунду (2 индекса, 3 колонки, int, datetime(3), numeric(10,4)), да есть триггер BEFORE INSERT, но он простейший и скорее как переходной этап (меняю структуру таблиц, раньше второй столбец был numeric, а первый enum, что не совместимо с pg_partman) Но даже тут появляется очередь на запись) Это при том, что сервер с 56 ядрами, 4 x NVMe RAID 0

Я вообще ничего не понял. Кто такие 3*2, что за очередь на запись, и вообще.

Ilya Anfimov
Я вообще ничего не понял. Кто такие 3*2, что за о...

78078 записей в секунду потолок, иногда немного меньше Написал в том виде в котором оно пишется 3 * 26 -> 26 коннекншенов, которые пишут по 3 записи в секунду (отдельными инсертами) 3000 * 26 -> 26 коннекшенов которые пишут по 3000 записей в секунду (одним инсертом)

Cvt
78078 записей в секунду потолок, иногда немного ме...

Стало понятнее, что это за числа — но не то, чтобы это как-то прояснило ситуацыю. (Вопросов и непонятностей скорее добавилось).

Cvt
Окей, как вы достигаете такой скорости?) У меня п...

А вообще — вы таки в диск должны упираться. Смотрите, сколько там вашы эти nvme пишут. И да, если автовакуум не настраивали — настраивайте, чтобы побыстрее вакуумил. Меньшэ до диска бегать будет.

Ilya Anfimov
А вообще — вы таки в диск должны упираться. Смотр...

Вообще вакуум пока-что не трогал Мой уровень управления постгресом еще не дорос до таких высот) Я обычно упирался в сложность SELECT-ов, а не в количество инсертов)

Cvt
78078 записей в секунду потолок, иногда немного ме...

А вообще, поскольку из вашых объяснений всё равно непонятно ничего — идите в закреп https://t.me/pgsql/303899 После ВСЕЙ этой информацыи можно будет что-то обсуждать. Собрать её можно вот этим скриптом https://t.me/pgsql/476688

Валерий Фёдоров
Простейшая таблица без индексов, два поля, общая д...

если вы исключительно пишите данные и никогда не будете их менять то зачем вам вообще постгрес?

Konstantin Zaitsev
Уверен что не навернется это просто прекрасно 🤦‍♀️...

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

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта