понять порядки пропускной способности PostgreSQL на запись: сколько максимально операций в секунду возможно при одинарных INSERT. Предвижу ответы про "много факторов". меня интересуют цифры которые вы видели. Т.е. именно понять порядки. Ясно что это не миллионы и не сотни тысяч. Насколько я понимаю из своего опыта, то типичная таблица с 10 колонками и индексами по 2-3 полям может заполнятся не быстрее чем 1000-1200 запросов в секунду. Какой у вас опыт? будем считать, что с железом все ок, оно какое надо и индексы влазят в память
Вобще-то, сотни тысяч — как раз лимит, достижымый без выхода в "большой спорт". А 1200 в секунду — это или очень большые INSERT, или сломано что-то.
Слушайте, а в порядке спортивного интереса, расскажете как таких цифр достичь теоретически? Знаю, что можно сделать таблицу, в которую я вставляю, unlogged и убедиться в отсутствии триггеров, ограничений на таблицу, индексов и т.д. Может быть, ещё можно писать в несколько сессий на стороне postgres/потоков на стороне оси. Да и если вы покидаете в меня ссылками, тоже буду благодарен)
>Может быть, ещё можно писать в несколько сессий на стороне postgres/потоков на стороне оси. Ну, разумеется, как ещё-то? Зачем вам постгрес, если параллельных воркеров нету... Не, ну тожэ можэт быть полезен — но тогда вообще странно ставить вопросы о скорости.
Хорошо, спасибо, понял )
И NVMe, разумеется.
И да, unlogged и без индэксов — это ужэ "большой спорт". Опять не очень понятно, какая можэт быть практическая перспектива у таких достижэний.
Простейшая таблица без индексов, два поля, общая длина записи 32 kB на моем домашнем ноутбуке выдает 400 тысяч в секунду без всякого тюнинга и ухищрений в один поток (как то раз потребовалось оценить возможный потолок). Диск NVMe.
А, без индэксов. Ой, ладно, да. Тожэ, правда, вероятно, не INSERT по одному — но да, такое можно добиться.
Да не то чтобы я собирался заниматься бенчмарками, скорее задался вопросом "вдруг я чего-то не знаю"
А на продакшене по сути логи-то и не нужны? Если база протестирована и ты полностью уверен что она не навернётся, отключение логирование даст прирост производительности.
Окей, как вы достигаете такой скорости?) У меня приходится 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, что за очередь на запись, и вообще.
78078 записей в секунду потолок, иногда немного меньше Написал в том виде в котором оно пишется 3 * 26 -> 26 коннекншенов, которые пишут по 3 записи в секунду (отдельными инсертами) 3000 * 26 -> 26 коннекшенов которые пишут по 3000 записей в секунду (одним инсертом)
Стало понятнее, что это за числа — но не то, чтобы это как-то прояснило ситуацыю. (Вопросов и непонятностей скорее добавилось).
А вообще — вы таки в диск должны упираться. Смотрите, сколько там вашы эти nvme пишут. И да, если автовакуум не настраивали — настраивайте, чтобы побыстрее вакуумил. Меньшэ до диска бегать будет.
Вообще вакуум пока-что не трогал Мой уровень управления постгресом еще не дорос до таких высот) Я обычно упирался в сложность SELECT-ов, а не в количество инсертов)
А вообще, поскольку из вашых объяснений всё равно непонятно ничего — идите в закреп https://t.me/pgsql/303899 После ВСЕЙ этой информацыи можно будет что-то обсуждать. Собрать её можно вот этим скриптом https://t.me/pgsql/476688
если вы исключительно пишите данные и никогда не будете их менять то зачем вам вообще постгрес?
Уверен что не навернется это просто прекрасно 🤦♀️🤦♀️🤦♀️
Знаю. Вчера вынес по вашей рекомендации контакты во вторичную таблицу. Результат - не везде на бэке внимательно поменял обращения и навернул демона. Пока чинил - запустил шеснадцатую (на которую уже неделю пытаюсь мигрировать), и снёс половину данных (поскольку битая она у меня, из-за криворукости). В результате поплакал, и просто стёр все данные и занёс обратно. Не совсем такая же ситуация, но смысл понятен.
12 мб/с не кажется большой скоростью.
Обсуждают сегодня