powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / совет по железу для 3k записей в секунду
10 сообщений из 10, страница 1 из 1
совет по железу для 3k записей в секунду
    #39732923
mos4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите пожалуйста примерную конфигурацию по железу только под сервер PostgreSQL (на *nix), для возможности вставки примерно 3000 записей в секунду.
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39732929
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
3000 tps это не так много. Знаю базы, которые даже в докере тянут больше 3000 tps c 8 CPU. А вообще, вводной информации мало. Записи ведь тоже разными бывают.
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39732950
mos4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
bff7755a,

конечно не в тему, но я думал, что postgresql в docker это очень плохо, из-за нетрадиционной фс.

Примерно одного такого запроса:
INSERT INTO schema.table_value (id, station_id, measure_date, longitude, latitude, speed, angle, altitude, temperature, satellites_visible, satellites_captured, source, status, distance_to_previous, station_imei) VALUES
(354710, 3, '2018-08-01 00:04:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 26, 19, 30, 23, 0, null),
(354711, 3, '2018-08-01 00:09:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 27, 17, 30, 23, 0, null),
(354712, 3, '2018-08-01 00:14:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 27, 17, 30, 23, 0, null),
(354713, 3, '2018-08-01 00:19:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 26, 17, 30, 23, 0, null),
(354714, 3, '2018-08-01 00:24:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 25, 19, 30, 23, 0, null),
(354715, 3, '2018-08-01 00:29:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 26, 19, 30, 23, 0, null),
(354716, 3, '2018-08-01 00:34:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 25, 19, 30, 23, 0, null),
(354717, 3, '2018-08-01 00:39:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 33, 26, 16, 30, 23, 0, null),
(354718, 3, '2018-08-01 00:44:03.000000', 47.2555656433105, 39.6006240844727, 0, 289, 74, 32, 26, 17, 30, 23, 0, null);
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39732960
bff7755a
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mos4bff7755a,
конечно не в тему, но я думал, что postgresql в docker это очень плохо, из-за нетрадиционной фс.


У нас микросервисная архитектура, был выбран такой подход. Со скоростью записи/чтения проблем как раз нет. Тут скорее другие факторы важнее - оверхед оверлейный докер сети, например, или конкуренция за доступ к ресурсам ядра. Зато довольно легко управлять конфигурацией и мониторингом всего этого.
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39733032
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mos4Примерно одного такого запроса
Примерно старенький ноутбук с SSD на борту справится.
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39733065
mos4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, спасибо!
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39733137
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а через COPY вообще 1/20 ноутбука хватит
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39734835
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
3000 tps это вообще ниочем. На линуксовом сервере с ссд 45-50к записей в секунду спокойно ложит.
На хдд 10-20к.
Но! Вы можете столкнуться с проблемой тормознутости драйвера приложения, которое будет инсертить записи.
Тот же jdbc просаживает инсерт конкретно. На яве мне не удавалось инсертить больше 5к записей в секунду.
Так что лучше используйте нативную обвертку над libpq.
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39735104
BigBudda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
EDUARD SAPOTSKI3000 tps это вообще ниочем. На линуксовом сервере с ссд 45-50к записей в секунду спокойно ложит.
На хдд 10-20к.
Но! Вы можете столкнуться с проблемой тормознутости драйвера приложения, которое будет инсертить записи.
Тот же jdbc просаживает инсерт конкретно. На яве мне не удавалось инсертить больше 5к записей в секунду.
Так что лучше используйте нативную обвертку над libpq.

Заранее извиняюсь, за глупый вопрос, это проблема самой java?
Если сравнивать с другими языками программирования, например php, то тут у php будет преимущество в скорости?

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

как это можно диагностировать? какую утилиту использовать, какой метод и т.п. если можете напишите на примере или скиньте статью
с подробным описанием.

И ещё: на какой версии jdbc проверяли?
...
Рейтинг: 0 / 0
совет по железу для 3k записей в секунду
    #39735352
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBuddaЗаранее извиняюсь, за глупый вопрос, это проблема самой java?
Если сравнивать с другими языками программирования, например php, то тут у php будет преимущество в скорости?
Есть стандартная сишная либа для создания клиентов для постгреса - libpq. Либа эта давно отлажена, хорошо и быстро работает. Эту же либу юзает например pgAdmin3 и т.д..
В интерпретируемых языках (php/python) нет своей реализации драйвера для постгреса. Там есть только обвертки над libpq, тот же psycopg:
http://initd.org/psycopg/docs/install.html Psycopg is a PostgreSQL adapter for the Python programming language. It is a wrapper for the libpq , the official PostgreSQL client library.
Т.е. в случае php/python непосредственных проблем с драйвером для постгресса нет, т.к. он там в принципе более чем страндартный.

А вот в случае с java решили заморочиться и создали с нуля отдельный jdbc-драйвер с сокетами, своим ssl и т.д.. Ну мол - мультиплатформенность, переносимость, бла-бла... Т.е. libpq там нет, все реализовано на java.
Java ессественно тупит по сравнению с Си, вот и драйвер тупит.
Если делаете учетку для табачного киоска в которой сотня инсертов в час, то естественно это не критично. А если нужно инсертить тысячи записей в секунду - провал перформанса более чем ощутимый.
Таже хрень и с дотнетом:
https://www.npgsql.org/ Npgsql is an open source ADO.NET Data Provider for PostgreSQL, it allows programs written in C#, Visual Basic, F# to access the PostgreSQL database server. It is implemented in 100% C# code , is free and is open source.

Но означает ли это, что в целом клиент на php/python будет работать быстрее клиента на java/c# ?
Нет. Т.к. перед инсертом данные как правило нужно еще как-то обрабатывать. И здесь java/c# могут легко уделать php/python.
BigBuddaкак это можно диагностировать? какую утилиту использовать, какой метод и т.п. если можете напишите на примере или скиньте статью
с подробным описанием.
Да соберите на коленке приложение, которое в цикле инсертит например 300к записей, засеките время. Примеров как инсертить - валом, первое что попалось: http://www.postgresqltutorial.com/postgresql-jdbc/insert/

Но выше уже сказал - в таких задачах интерпретаторы(виртуальные машины) это гарантированный геморой.
Если нужно в реальном времени обрабатывать и инсертить/апдейтить тысячи записей в секунду - это те задачи где хардкордному нативу нет равных.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / совет по железу для 3k записей в секунду
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]