powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Медленный COPY
13 сообщений из 13, страница 1 из 1
Медленный COPY
    #39737675
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Есть таблица:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
CREATE TABLE "public"."ParamValueBlock" (
  "ParameterId" int2 NOT NULL,
  "DeviceId" int2 NOT NULL,
  "CompressedData" bytea,
  "StartDate" int4 NOT NULL,
  "UncompressedDataBits" int4 NOT NULL
)



База данных чистая. Т.е. без индексов, без триггеров и т.п.
Вставляю 1000 записей примерно так:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
dbWrk.Tx.Prepare(pq.CopyIn("ParamValueBlock", "ParameterId", "DeviceId", "CompressedData", "StartDate", "UncompressedDataBits"))
for _, param := range params{
     stmt.Exec(
          param.ParameterID,
          param.DeviceID,
          param.CompressedData,
          param.StartDate,
          param.UncompressedDataBits)
}



В логах это:
автор2018-11-23 17:43:47.085 MSK [7700] СООБЩЕНИЕ: оператор: BEGIN ISOLATION LEVEL READ COMMITTED READ WRITE
2018-11-23 17:43:47.085 MSK [7700] СООБЩЕНИЕ: оператор: COPY "ParamValueBlock" ("ParameterId", "DeviceId", "CompressedData", "StartDate", "UncompressedDataBits") FROM STDIN
2018-11-23 17:43:54.020 MSK [7700] СООБЩЕНИЕ: оператор: COMMIT

Весь день пытался найти причину того, что 1000 записей вставляются 7! секунд
Помогите пожалуйста
...
Рейтинг: 0 / 0
Медленный COPY
    #39737745
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GLeBaTi,

потестируйте тоже самое без "CompressedData" для начала...
если станет сильно быстрее - смотрите на размер этого поля у вас...

вы по сети тестируете или локально?
какой диск на базе?

может не хватать или диска или сети если вы большие обьемы данных туда суете.
...
Рейтинг: 0 / 0
Медленный COPY
    #39737748
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Bogukпотестируйте тоже самое без "UncompressedDataBits" для начала...
CompressedData видимо, который bytea. UncompressedDataBits - int4 и вряд ли даст проблему.

ну и интересно было бы log_min_duration_statement = 0 добавить, чтобы было видно, что тупит не приложение перед отправкой коммита.
...
Рейтинг: 0 / 0
Медленный COPY
    #39737757
gav21
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GLeBaTi,
Если версия PG>10, то посмотрите во время выполнения наpg_stat_activity.wait, pg_stat_activity.wait_event, хотя бы будет понятно на каких ожиданиях висит запрос.
...
Рейтинг: 0 / 0
Медленный COPY
    #39738398
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukGLeBaTi,

потестируйте тоже самое без "CompressedData" для начала...
если станет сильно быстрее - смотрите на размер этого поля у вас...

вы по сети тестируете или локально?
какой диск на базе?

может не хватать или диска или сети если вы большие обьемы данных туда суете.
Без CompressedData моментально сохраняется. Размер поля примерно 28КБ
Тестирую локально.
На базе диск HDD если это имеется ввиду.
Места на HDD ещё много
...
Рейтинг: 0 / 0
Медленный COPY
    #39738402
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MelkijMaxim Bogukпотестируйте тоже самое без "UncompressedDataBits" для начала...
CompressedData видимо, который bytea. UncompressedDataBits - int4 и вряд ли даст проблему.

ну и интересно было бы log_min_duration_statement = 0 добавить, чтобы было видно, что тупит не приложение перед отправкой коммита.

автор2018-11-26 10:54:15.698 MSK [9028] СООБЩЕНИЕ: оператор: COPY "ParamValueBlock" ("ParameterId", "DeviceId", "CompressedData", "StartDate", "UncompressedDataBits") FROM STDIN;
2018-11-26 10:54:22.941 MSK [9028] СООБЩЕНИЕ: продолжительность: 7243.325 мс
...
Рейтинг: 0 / 0
Медленный COPY
    #39738403
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
gav21, висит как-раз на
"COPY "ParamValueBlock" ("ParameterId", "DeviceId", "CompressedData", "StartDate", "UncompressedDataBits") FROM STDIN;"
...
Рейтинг: 0 / 0
Медленный COPY
    #39738430
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю, может на файлы обычные перейти. Менять их не нужно, только считывать.
...
Рейтинг: 0 / 0
Медленный COPY
    #39738633
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то я не понимаю:

2018-11-23 17:43:47 COPY .... STDIN
2018-11-23 17:43:54 COMMIT

54-47 = 7 секунд

7 секунд на 1000 записей X размер поля примерно 28КБ = 28 Мегабайт - на мой взгляд более-менее нормально
...
Рейтинг: 0 / 0
Медленный COPY
    #39738643
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, если я делаю те-же данные через
Код: plsql
1.
COPY "ParamValueBlock" FROM 'C:\Temp\x.txt' (FORMAT text);


, то операция выполняется за 0.7 секунд.
...
Рейтинг: 0 / 0
Медленный COPY
    #39738649
Павел Лузанов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GLeBaTi,

Разве это не похоже на то, что приложение в STDIN медленно отдает, а не COPY долго загружает?
...
Рейтинг: 0 / 0
Медленный COPY
    #39738651
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Павел Лузанов, хорошо, у гошников поспрашиваю пока)
...
Рейтинг: 0 / 0
Медленный COPY
    #39739646
GLeBaTi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если кому интересно, это был баг стандартного драйвера golang для pg:
https://github.com/lib/pq/pull/784

Решение:
https://stackoverflow.com/a/53515774/273455
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Медленный COPY
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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