powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / оптимизация insert
19 сообщений из 19, страница 1 из 1
оптимизация insert
    #35033063
Andrew Kornilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
от каких факторов может зависить скорость инсерта?

возникла проблема: инсерт в таблицу (по статистике постгреса) занимает от 500 до 2000 милисекунд.

убил функциональнвые индексы, оставил только жизненно необходимые простые - ситуация улучшилась но не на много.
...
Рейтинг: 0 / 0
оптимизация insert
    #35033082
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Kornilovот каких факторов может зависить скорость инсерта?

возникла проблема: инсерт в таблицу (по статистике постгреса) занимает от 500 до 2000 милисекунд.

убил функциональнвые индексы, оставил только жизненно необходимые простые - ситуация улучшилась но не на много.
ИМХО:
1. Дисковая подсистема
2. Форейн-кеи
3. Индексы
4. Триггера
5. Подсистема рулей
...
Рейтинг: 0 / 0
оптимизация insert
    #35033084
Andrew Kornilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
причем данные вставляются само собой одинаковые по структуре. почему время плавает и от чего зависит не понятно. как дебагить не понятно тоже
...
Рейтинг: 0 / 0
оптимизация insert
    #35033090
Andrew Kornilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо. да про форинкеи я забыл. они действительно есть
...
Рейтинг: 0 / 0
оптимизация insert
    #35033115
Фотография Zashibis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А данные вставляете пачками, или по одной строке?
У меня в таблица без индексов и прочего одна запись вставлялась за 80 милисекунд, а большой инсерт из 100 строк - за 100 мс
Время вставки сильно прыгает из-за внутреннего устройства PostgreSQL, кэши, обслуживающие процессы и прочее. Тот же Insert мог занимать и секунду без видимых причин.
...
Рейтинг: 0 / 0
оптимизация insert
    #35033157
Andrew Kornilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
по одному и "пачковать" не получится. данные вставляются с других (разных) хостов, каждый из которых имеет пконнект к базе. разве что пгпул умеет делать такой финт - делать пачку отложенных инсертов
...
Рейтинг: 0 / 0
оптимизация insert
    #35033169
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Kornilovпо одному и "пачковать" не получится. данные вставляются с других (разных) хостов, каждый из которых имеет пконнект к базе. разве что пгпул умеет делать такой финт - делать пачку отложенных инсертов
Тогда, вполне возможно, что просто дисковая не справляется. Каждый INSERT в отдельной транзакции и flash'ится на винт.
...
Рейтинг: 0 / 0
оптимизация insert
    #35036426
rteter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
можно отключить fsync и посмотреть как изменится ситуация...
если резко сканет производительность - значит дело точно в дисках...
есть еще мысли по разнесению логов транзакций, кластера базы и системы на разные винты..
какая сейчас у вас организацмя дисковой подсистемы ?
...
Рейтинг: 0 / 0
оптимизация insert
    #35036504
Oleg Bartunov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrew Kornilovспасибо. да про форинкеи я забыл. они действительно есть

Если вставляешь в транзакции, то есть смысл
поиграться с SET CONSTRAINTS ... DEFERRED
http://www.postgresql.org/docs/8.2/static/sql-set-constraints.html
В этом случае будет проверка в конце транзакции проводится.
...
Рейтинг: 0 / 0
оптимизация insert
    #35048444
Andrew Kornilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rteterможно отключить fsync и посмотреть как изменится ситуация...
если резко сканет производительность - значит дело точно в дисках...
есть еще мысли по разнесению логов транзакций, кластера базы и системы на разные винты..
какая сейчас у вас организацмя дисковой подсистемы ?

да отключение фсинка сильно помогло
...
Рейтинг: 0 / 0
оптимизация insert
    #35049007
terrater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andrew Kornilov

Что помогло, это хорошо. Но тогда следите за питанием на серваке, а то внезапное отключение будет черевато потерями данных, т.к. fcync по сути есть отложенная запись.
...
Рейтинг: 0 / 0
оптимизация insert
    #35051943
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
могу ли я отключить\включить fsync из приложения (на шарпе,но не так важно), на ходу?
или для этого нужен перестарт сервера?
...
Рейтинг: 0 / 0
оптимизация insert
    #35053784
terrater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh

Говорит и рассказывает Документация!

"This parameter can only be set in the postgresql.conf file or on the server command line. If you
turn this parameter off, also consider turning off full_page_writes"

- переводить надо ?
...
Рейтинг: 0 / 0
оптимизация insert
    #35053988
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
terrater Winnipuh

Говорит и рассказывает Документация!

"This parameter can only be set in the postgresql.conf file or on the server command line. If you
turn this parameter off, also consider turning off full_page_writes"

- переводить надо ?

надо, это где?
"on the server command line"
в psql ?
...
Рейтинг: 0 / 0
оптимизация insert
    #35054023
Thamerlan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте заменить инсерты на конструкцию вида

Код: plaintext
1.
2.
3.
4.
5.
6.
PREPARE fooplan (int, text, bool, numeric) AS
    INSERT INTO foo VALUES($ 1 , $ 2 , $ 3 , $ 4 );

EXECUTE fooplan( 1 , 'Hunter Valley', 't',  200 . 00 );
...
EXECUTE fooplan( 9 , 'X Valley', 't',  100 . 00 );

дока
...
Рейтинг: 0 / 0
оптимизация insert
    #35054062
terrater
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Winnipuh terrater Winnipuh

Говорит и рассказывает Документация!

"This parameter can only be set in the postgresql.conf file or on the server command line. If you
turn this parameter off, also consider turning off full_page_writes"

- переводить надо ?

надо, это где?
"on the server command line"
в psql ?

"on the server command line" - это значит, что параметр задается при запуске постгреса из консоли, т.е. при старте кластера БД.

Если fsync меняется в конфиге, то надо делать pg_ctl reload, полный рестарт не нужен.
...
Рейтинг: 0 / 0
оптимизация insert
    #35055622
Maxim Timofeyev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
terrater Andrew Kornilov

Что помогло, это хорошо. Но тогда следите за питанием на серваке, а то внезапное отключение будет черевато потерями данных, т.к. fcync по сути есть отложенная запись.

А журналируемая FS разве не поможет?
...
Рейтинг: 0 / 0
оптимизация insert
    #35055932
Фотография Ёш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Timofeyev terrater Andrew Kornilov

Что помогло, это хорошо. Но тогда следите за питанием на серваке, а то внезапное отключение будет черевато потерями данных, т.к. fcync по сути есть отложенная запись.

А журналируемая FS разве не поможет?имхо нет, ФС не знает какое из состояний файла является непротиворечивым с точки зрения СУБД
...
Рейтинг: 0 / 0
оптимизация insert
    #35056010
Maxim Timofeyev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ёш Maxim TimofeyevА журналируемая FS разве не поможет?имхо нет, ФС не знает какое из состояний файла является непротиворечивым с точки зрения СУБД
Согласен, что не знает. Но у меня пока (тьфу-тьфу) небыло сбоя, а fsync всегда снимаю, т.к. уж больно тормозится работа с БД...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / оптимизация insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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