|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
Добрый день, подскажите пожалуйста примерную конфигурацию по железу только под сервер PostgreSQL (на *nix), для возможности вставки примерно 3000 записей в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 12:20 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
3000 tps это не так много. Знаю базы, которые даже в докере тянут больше 3000 tps c 8 CPU. А вообще, вводной информации мало. Записи ведь тоже разными бывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 12:27 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
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); ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 12:50 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
mos4bff7755a, конечно не в тему, но я думал, что postgresql в docker это очень плохо, из-за нетрадиционной фс. У нас микросервисная архитектура, был выбран такой подход. Со скоростью записи/чтения проблем как раз нет. Тут скорее другие факторы важнее - оверхед оверлейный докер сети, например, или конкуренция за доступ к ресурсам ядра. Зато довольно легко управлять конфигурацией и мониторингом всего этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 13:06 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
mos4Примерно одного такого запроса Примерно старенький ноутбук с SSD на борту справится. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 14:40 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 15:29 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
а через COPY вообще 1/20 ноутбука хватит ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2018, 17:42 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
3000 tps это вообще ниочем. На линуксовом сервере с ссд 45-50к записей в секунду спокойно ложит. На хдд 10-20к. Но! Вы можете столкнуться с проблемой тормознутости драйвера приложения, которое будет инсертить записи. Тот же jdbc просаживает инсерт конкретно. На яве мне не удавалось инсертить больше 5к записей в секунду. Так что лучше используйте нативную обвертку над libpq. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2018, 19:19 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
EDUARD SAPOTSKI3000 tps это вообще ниочем. На линуксовом сервере с ссд 45-50к записей в секунду спокойно ложит. На хдд 10-20к. Но! Вы можете столкнуться с проблемой тормознутости драйвера приложения, которое будет инсертить записи. Тот же jdbc просаживает инсерт конкретно. На яве мне не удавалось инсертить больше 5к записей в секунду. Так что лучше используйте нативную обвертку над libpq. Заранее извиняюсь, за глупый вопрос, это проблема самой java? Если сравнивать с другими языками программирования, например php, то тут у php будет преимущество в скорости? авторможете столкнуться с проблемой тормознутости драйвера приложения как это можно диагностировать? какую утилиту использовать, какой метод и т.п. если можете напишите на примере или скиньте статью с подробным описанием. И ещё: на какой версии jdbc проверяли? ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 12:51 |
|
совет по железу для 3k записей в секунду
|
|||
---|---|---|---|
#18+
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/ Но выше уже сказал - в таких задачах интерпретаторы(виртуальные машины) это гарантированный геморой. Если нужно в реальном времени обрабатывать и инсертить/апдейтить тысячи записей в секунду - это те задачи где хардкордному нативу нет равных. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2018, 22:31 |
|
|
start [/forum/topic.php?fid=53&fpage=48&tid=1995490]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 145ms |
0 / 0 |