|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
Ну и на простеньком SSD, core i5-8400 2.8, 4Gb: insert 2млн записей, текущий вариант (массив строк фикс формата) в несколько потоков. Без индексов пакетами по 20 записей - 12сек пакетами по 200 записей - 5сек С индексами пакетами по 20 записей - 24сек пакетами по 250 записей - 16сек То есть все в 2 раза быстрее, хоть и ожидал большего, но 125тыс.записей/сек с индексами в целом нормально. Ище бы сюда IOT, index skip scan (тогда хватило бы одного индекса), патишены с возможностью их разнесения по разным дискам и логи на отдельный диск, плюс передача массива объектов или массива бинарных данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.03.2020, 23:38 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS Ище бы сюда IOT Чем бы оно помогло? JDS index skip scan (тогда хватило бы одного индекса) Всё в ваших руках, объясните вручную , посоучаствуйте в реализации JDS патишены с возможностью их разнесения по разным дискам и логи на отдельный диск Давным-давно существует. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2020, 11:50 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
Melkij , да, как оказалось IOT + индекс вместо двух индексов ничего не дает. Насчет "объясните вручную" там что-то интересное, но если количество уникальных значений будет большим, эти рекурсивные запросы будут висеть очень долго. До соучастия очень далеко ) Нашел еще PgBulkInsert . на SSD вставка 2млн записей одним пакетом без индексов - 3сек, с индексами пакетами по 200 записей - 11сек Вполне себе неплохо, попробую пока остановиться на этом варианте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.03.2020, 00:27 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
ТОлько что взял 150к строк в секунду при помощи Код: plaintext
в базе один btree-индекс по четырем полям. Все настройки по-умолчанию. 5 млн всасывается за 3.4 секунды. база установлена в виртуалку с 8-мью виртуальными ЦПУ 32 ГБ рамы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 21:36 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
cvv ТОлько что взял 150к строк в секунду при помощи Код: plaintext
в базе один btree-индекс по четырем полям. Все настройки по-умолчанию. 5 млн всасывается за 3.4 секунды. база установлена в виртуалку с 8-мью виртуальными ЦПУ 32 ГБ рамы. Это все в один поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.03.2020, 21:47 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
cvv, а есть возможность выложить тесткейс, прогнать у себя? У меня правда на машине где ssd core i5 и 4гб. Но копи так понимаю из файла инсертит. Если бы можно было хотя бы из потока копи. У меня просто копи с инднксами работает все равно небыстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 13:14 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
cvv , и еще не понятно если 150к в секунду, то откуда 5млн, за 3.5сек? Или скорость выше, или не 5млн, а 0.5млн? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 13:30 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS cvv, а есть возможность выложить тесткейс, прогнать у себя? У меня правда на машине где ssd core i5 и 4гб. Но копи так понимаю из файла инсертит. Если бы можно было хотя бы из потока копи. У меня просто копи с инднксами работает все равно небыстро. copy может из stdout прекрасно вставлять штатным методом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 13:38 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS cvv , и еще не понятно если 150к в секунду, то откуда 5млн, за 3.5сек? Или скорость выше, или не 5млн, а 0.5млн? Да, ты прав. Вот числа с моего ноута (i7-7820HQ CPU @ 2.90GHz, 32 GB, Samsung pro SSD): Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 14:26 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS cvv , и еще не понятно если 150к в секунду, то откуда 5млн, за 3.5сек? Или скорость выше, или не 5млн, а 0.5млн? А вот вчерашний сервер на виртуалке (Xeon(R) Gold 6254 CPU @ 3.10GHz, 32 ГБ, SSD, VMWARE): Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 14:43 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS cvv, а есть возможность выложить тесткейс, прогнать у себя? У меня правда на машине где ssd core i5 и 4гб. Ну теоретически возможно, если у тебя Ubuntu 16.04. JDS cvv, Но копи так понимаю из файла инсертит. Если бы можно было хотя бы из потока копи. Нет, я инсерчу не с диска а с сети. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 14:48 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS, Таблица и индекс создается запросом из комментов в конце этого файла: https://github.com/fandrej/glonassd/blob/master/pg.c А COPY выгдядит вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.03.2020, 14:50 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
cvv , да, интересный вариант по скорости и в целом круто. А так у меня через один коннект к БД - 2млн - 20сек, но таблица 5 полей. Если в пуле 15 коннектов, то 11сек, 30 коннектов - 9сек. Не уверен, что у меня получится переложить С на Java, но в PgBulkInsert-е есть CopyManager , который работает через copy stdin, но примеры тоже из файла и то не проверял, как сделать обертку, чтобы читать из памяти как из файла... возможно сразу писать в OutputStream нужную информацию типа как в файл, а в CopyManager.copyIn передавать ридер для этого потока. Да и что писать на вход навроде String.GetBytes().. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2020, 00:04 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
Там же есть еще PgBinaryWriter , это уже ближе к искомому похоже, но как с ним работать пока не понял. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2020, 00:55 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS переложить С Упомянули бы что речь вовсе о C COPY t FROM STDIN (FORMAT binary); и PQputCopyData Формат структуры упомянут здесь: Binary format ... |
|||
:
Нравится:
Не нравится:
|
|||
08.03.2020, 16:52 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
Так как пишут, дескать бинари формат может съезжать от версии постгрес, пока без него. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 22:24 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
JDS Так как пишут, дескать бинари формат может съезжать от версии постгрес, пока без него. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 23:49 |
|
Оптимизация INSERT-ов
|
|||
---|---|---|---|
#18+
cvv Все бэкапы построены на этом бинари формате. Нет. pg_dump при общении с базой использует текстовый формат copy. https://github.com/postgres/postgres/blob/REL_11_STABLE/src/bin/pg_dump/pg_dump.c#L1766 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.03.2020, 00:17 |
|
|
start [/forum/topic.php?fid=53&gotonew=1&tid=1994775]: |
0ms |
get settings: |
12ms |
get forum list: |
12ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
31ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 161ms |
0 / 0 |