Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
Приветсвую всех форумчан! Проблема следующая: из хранимой процедуры написанной на C необходимо вставить большое количество записей (порядка 1 млн) в таблицу: Код: plaintext 1. 2. 3. 4. 5. 6. сейчас выполняю это вызовом в цикле следующей функции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. результат 760000 записей за 66-76сек (в зависимости от изменения параметров posgtresql.conf) т.е. ~ 12000 записей в секунду. Процессор 1.2ГГц. Пробовал транзакции (по 10000 записей на транзакцию), скорость практически не меняется. =\ Посгрес стартую с флагами -o '-F' postgresql.conf: Код: plaintext 1. 2. 3. 4. 5. Это достаточная скорость для посгреса? Как можно убыстрить добавление записей? Для сравнения время копирования того же количества записей командой SQL INSERT INTO coupons SELECT * FROM coupons_tmp ; 20 сек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 01:05 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
пардон: postmaster --version postmaster (PostgreSQL) 8.1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 01:08 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
Я бы по-любому изменил схему добавления, если возможно, конечно. SPI_connect(); for(int i=0;i<1000000;++i){ SPI_exec(buf, 0); } SPI_finish(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 11:00 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
> результат 760000 записей за 66-76сек Посчитайте, какова скорость физической записи на диск. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 12:15 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
PostgreSQL начинающий> результат 760000 записей за 66-76сек Посчитайте, какова скорость физической записи на диск. пожалуйста: hdparm -t /dev/hda /dev/hda: Timing buffered disk reads: 60 MB in 3.02 seconds = 19.89 MB/sec ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 21:52 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
HordiЯ бы по-любому изменил схему добавления, если возможно, конечно. SPI_connect(); for(int i=0;i<1000000;++i){ SPI_exec(buf, 0); } SPI_finish(); Раньше собственно было так, скорость была не больше (или не сильно больше). Сейчас это невозможно, т.к. для этого придется буферизировать эти 1000000 записей ( а дополнительную память использовать жуть как не хочется), т.к. добавляемые записи выбираются из запроса. т.е. вызов функции добавления происходит так: Код: 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. этим и обусловлены вызов функций push() и pop() а такде connect() и finish() при добавлении... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 22:00 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
> 19.89 MB/sec Для одиночного диска приемлемый результат. Если есть желание ускорить работу, imho нужна более производительная дисковая подсистема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2006, 22:28 |
|
||
|
производительность insert
|
|||
|---|---|---|---|
|
#18+
У меня получалось добиться ~80000 insert/сек с включенным fsync на обычном 80Гб IDE (sequental read по hdparm ~50Мб/сек), но на машинке 2x2.8Ггц Xeon. Не знаю насколько сильно здесь влияет производительность HDD, но мне помнится, что "затык" был в CPU. Этого rate'а получилось достич только с исползованием SPI_saveplan+SPI_prepare и одного SPI_connect на все. Также как и у вас INSERT'ы делались на данные, которые были получены из SELECT'а в этой же процедуре. Не использовал SPI_push()/SPI_pop(). P.S.: версия pg 7.4.x. Могу выслать свои исходники. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2006, 05:10 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=264&tid=2004153]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 255ms |
| total: | 400ms |

| 0 / 0 |
