Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
15.06.2008, 21:28
|
|||
|---|---|---|---|
|
|||
непонятные зависания во время вставки данных |
|||
|
#18+
Всем привет. возникла следующая проблема - есть база, в которую периодичестки нужно заносить пачками данные. данные при этом заносятся обычными инсертами. скорость отработки одиночного инсерта достаточно мала, порядка 1мс. Когда начинается импорт данных скорость вставки данных остается именно на таком уровне, но по прошествии некоторого времени скорость инсерта резко замедляется и в конечном итоге вся база подвисает - в том числе не отвечает ни на какие запросы на выборку данных от других пользователей. такой подвисон продолжается секунд 30, после чего всё опять начинает работать очень быстро. рабочая база функционирует под freebsd7.0, однако я промоделировал такую систуацию на рабочей машине под управления win2003 - там абсолютно такие же проблемы - периодически процесс вставки данных замедляется, причем в это время на системном мониторе видно очень сильно возросшее количество обращений к дискам. активное юзанье дисков продолжается некоторое время (от 20 секунд до минуты) и после этого всё снова приходит в норму. а минуты через 2-3 всё снова подвисает. то есть это не проблема одно какой-то системы, это какие-то общие особенности работы постгре. подскажите, какие параметры нужно смотреть? пусть каждый инсерт по отдельности будет делаться медленнее чем сейчас, но главное чтобы не было этих ужасных подвисаний. я делал следующее: 1) увеличил количество сегментов до 256 2) отключил fsync 3) увеличил checkpoint_timeout до 20 минут 4) менял значения checkpoint_completion_target от 0 до 0.9 5) изменял bgwriter_delay от 10 мс до 1000 мс а также bgwriter_lru_maxpages все эти манипуляции вообще никак не повлияли на проблему - через примерно одинаковое количество вставленных данных база всё так же на некоторое время зависает. все эти манипуляции проводились на postgre 8.3.1. однако я поставил для эксперимента на рабочую машину 8.2, создал тестовую табличку и попробовал загрузить данные в неё - там такие же проблемы. в общем я уже не знаю что ещё оттюнить чтобы эти подвисания прекратились... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.06.2008, 22:13
|
|||
|---|---|---|---|
непонятные зависания во время вставки данных |
|||
|
#18+
"пачками" данные, как правило, вносят командой COPY. ... если б так делали то до "провисаний" дело б не доходило. А в остальном конкретизируйте вашу проблему ....какие объемы данных, интенсивность вставки, каким споробом производится вставка, индексы, AUTOVACUUM.. и т.д. Неплохо глянуть на статистику, воспользуйтесь прелестями CACTI, для простреса . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
15.06.2008, 23:39
|
|||
|---|---|---|---|
|
|||
непонятные зависания во время вставки данных |
|||
|
#18+
копи, к сожелению, использовать не получается. на то есть две причины 1) драйвер jdbc не поддерживает команду copy 2) на таблице, куда вставляются данные, висят правила, которые при вставки с помощью copy не будут учитываться. ....какие объемы данных, интенсивность вставки, каким споробом производится вставка, индексы, AUTOVACUUM.. и т.д. как я говорил я моделировал такое на многих системах. самый простой способ добиться такого эффекта - поставить конфиг по умолчанию, создать там таблицу, повесить первичный ключ, добавить несолкько полей, потом написать программу которая начнет вставлять туда данные, через буквально несколько минут можно наблюдать подобные зависания. меня больше всего волнует вопрос как избежать этого волнообразного наплыва тормозов. пусть будет всё медленнее, я согласен, лишь бы не было мёртвых подвисаний. как этого можно добиться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.06.2008, 12:14
|
|||
|---|---|---|---|
непонятные зависания во время вставки данных |
|||
|
#18+
за свой 2-х годичный опыт много раз приодилось вставлять большие объемы данных (>10 млн.), в некоторых случаях и методом INSERT. и никогда у меня ничего подобного не происходило. Возможно это связано с тем что я никогда не использовал jdbc (возможно собака там зарылась), ...а также пропробуйте подтверждать транзакцию через каждые 500 записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.06.2008, 23:13
|
|||
|---|---|---|---|
|
|||
непонятные зависания во время вставки данных |
|||
|
#18+
Судя по описанию проблемы, дело в происходящих CHECKPOINT'ах. В нормальной ситуации, впрочем, глухих зависаний быть не должно, скорее всего что-то не так с дисковой подсистемой (ну хотя бы тупо отключён режим DMA при доступе к диску, тут запись большого кол-ва данных всё что угодно подвесит). Что за диски, что за контроллер, какой RAID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=2004288]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
39ms |
get tp. blocked users: |
2ms |
| others: | 261ms |
| total: | 438ms |

| 0 / 0 |
