powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / поведение сервера: INSERT и count(*)
14 сообщений из 14, страница 1 из 1
поведение сервера: INSERT и count(*)
    #34823451
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация такая:
есть прилжение, которое читает данные из базы mssqlserver и пишет в базу PG 8.2.4.
Точнее коннектится к PGPool, за которым стоят два сервера Ubuntu с PG 8.2.4.
Это приложение делает только инсерты.

Всего в исходной базе 8 млн записей, котрые надо прочитать и вставить в PG.

Приложение показывает к-во вставленных записей.

1. после того как прилождение проработало часов 6 и вставило 3,5 млн записей оно стало работать заметно медленнее

2. Как только в терминале в psql я выполняю команду select count(*) from xprop
сразу вижу как приложение чуть ли не останавливается и после того как команда выполнена - продолжает вставлять.

Гуру, ваши коментарии? ....
Где, что и как улучшить?
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34823599
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh
2. Как только в терминале в psql я выполняю команду select count(*) from xprop
сразу вижу как приложение чуть ли не останавливается и после того как команда выполнена - продолжает вставлять.

Гуру, ваши коментарии? ....
Где, что и как улучшить?
Я не гуру, но посмотреть могу (с) почти из анекдота.
Очень, очень ФАКовый вопрос. SELECT count(*) FROM bigtable - есть зло для PG.
По скольку ФАК+поиск это слишком тяжело, то в кратце: сделать отдельную таблицу которую триггерно на INSERT обновлять и брать значения оттуда.
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34823612
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron Winnipuh
2. Как только в терминале в psql я выполняю команду select count(*) from xprop
сразу вижу как приложение чуть ли не останавливается и после того как команда выполнена - продолжает вставлять.

Гуру, ваши коментарии? ....
Где, что и как улучшить?
Я не гуру, но посмотреть могу (с) почти из анекдота.
Очень, очень ФАКовый вопрос. SELECT count(*) FROM bigtable - есть зло для PG.
По скольку ФАК+поиск это слишком тяжело, то в кратце: сделать отдельную таблицу которую триггерно на INSERT обновлять и брать значения оттуда.

это я (уже ;-)) понимаю, я count(*) выбрал в качестве примера.
Оно то зло, но не до такой же степени, чтобы сервер тормозил и все клиенты ждали? ...
А если я я буду делать обычный селект, тормозов не будет?
Если будет 100 коннектов? ..
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34823819
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh
это я (уже ;-)) понимаю, я count(*) выбрал в качестве примера.
Оно то зло, но не до такой же степени, чтобы сервер тормозил и все клиенты ждали? ...
А если я я буду делать обычный селект, тормозов не будет?
Если будет 100 коннектов? ..
Ну пример - так себе. Он малость непоказателен. На самом деле - он делает всего лишь seqscan по таблице. А дисковая наверняка сильно загружена - вот все и тормозит благодаря "дерганью" диска. Благодаря непрерывным модификациям файл/таблица не эффективно кешируются (ИМХО).
Обычный селект, т.е. SELECT 1+1 - тормозить не будет. более сложные - смотреть нужно, планы изучать, моделировать.
100 коннектов SELECT 1+1 - скорее всего тоже не будут. 100 коннектов бывают разные. Если это будут клиенты каждый из которых множественно с блокировками будет делать перерасчет на 1 минуту (в выделнном режиме), то 100 таких конкурентных транзакций будут требовать хорошего сервера и тащательной продумки архитектуры.

ЗЫ А на практике - моделировать нужно. Ибо есть мелочи которые могут вылезти лично у Вас при масштабировании в которые никто раньше не упирался. Например - выпадение таблицы из кеша из-за его нехватки, "кривые" seqscan'овые запросы и т.д. Т.е. оценки будут из серии "лечить по фотографии", и могут быть весьма далеки от Вашей практики. ИМХО.
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34823860
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку - вспомните свой пост про первый и последующие запуски поиска с использованием индекса. 1-й 2 минуты, 2-й 2 секунды.
Если у Вас хватит мозгов ( в смысле оперативной памяти) на "правильный" кеш - то будет счастие. Если все 100 клиентов будут винт дергать - ИМХО может и сдохнуть нафик. Тут даже скази не поможет
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34823865
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Andrey Daeron

спасибо....
в том то и вопрос, можно ли надеяться на PG для работы 100-300 коннектов
Вопрос хардваре не стоИт, хорошие серверы будут куплены.
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34824939
905
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh
1. после того как прилождение проработало часов 6 и вставило 3,5 млн записей оно стало работать заметно медленнее


а не медленно ли за 6 часов всеголишь 3.5 млн записей ?

я бы сделал не через insert, а выгрузил бы из mssql в файл и загрузил бы командой copy
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34825034
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
905 Winnipuh
1. после того как прилождение проработало часов 6 и вставило 3,5 млн записей оно стало работать заметно медленнее


а не медленно ли за 6 часов всеголишь 3.5 млн записей ?

я бы сделал не через insert, а выгрузил бы из mssql в файл и загрузил бы командой copy

медленно....
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34825755
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh2 Andrey Daeron
спасибо....

Незачто :)

Winnipuh
в том то и вопрос, можно ли надеяться на PG для работы 100-300 коннектов
Вопрос хардваре не стоИт, хорошие серверы будут куплены.

Блин, ну что я могу сказать - есть средства аффтоматизации тестирования нагрузки. Берем и нагружаем. Сильно нагружаем. Еще сильнее. Наблюдаем, рисуем графики. Прогнозируем объемы. Сводим все в месте и получаем ответ.
Примеры использования на афигенных объемах и сложных БД есть. Примеры - сайт самого постгреса (вместе с поисковыми технологиями) и еще куча всего озвучено было на форуме.

ЗЫ А медленно - там же индексов немеряно?
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34825795
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron Winnipuh2 Andrey Daeron
спасибо....

Незачто :)

Winnipuh
в том то и вопрос, можно ли надеяться на PG для работы 100-300 коннектов
Вопрос хардваре не стоИт, хорошие серверы будут куплены.

Блин, ну что я могу сказать - есть средства аффтоматизации тестирования нагрузки. Берем и нагружаем. Сильно нагружаем. Еще сильнее. Наблюдаем, рисуем графики. Прогнозируем объемы. Сводим все в месте и получаем ответ.
Примеры использования на афигенных объемах и сложных БД есть. Примеры - сайт самого постгреса (вместе с поисковыми технологиями) и еще куча всего озвучено было на форуме.

ЗЫ А медленно - там же индексов немеряно?

не так много, но длинные строки полнтекстово индексируются.
Буду в Киеве - с меня пыво. ;)
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34825816
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh
не так много, но длинные строки полнтекстово индексируются.
Буду в Киеве - с меня пыво. ;)
Ну вот я и думаю, что очень много времени идет на построение (возможно перстроение иногда) этого полнотекстового индекса.

ЗЫ А на тесты внятные было бы очень интерестно взглянуть. Не так много людей на этом форуме имеют 100-200 коннектов к БД.
ЗЗЫ А пыво это можно
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34825886
Nick Gazaloff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
http://www.postgresql.org/docs/8.2/interactive/populate.html
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34840982
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот все равно не могу смириться...

Есть главная partitioned таблица t, и 4 выведенных из нее t1, t2, t3, t4.
Есть приложение, которое делает инсерты в главную таблицу.

В конкретный момент времени идет вставка в таблицу и точнее в t3 .

Даю запрос:

select count(*) from t2 ;

Сразу вижу как работа приложения останавливается, счетчики не обновляются, как только запрос отработал - вставка продолжается.
...
Рейтинг: 0 / 0
поведение сервера: INSERT и count(*)
    #34841069
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuhдлинные строки полнтекстово индексируютсяобнвление полнотекстовых индексов - относительно медленная операция. может быть делать drop index; массированный insert; create index.

WinnipuhСразу вижу как работа приложения останавливается, счетчики не обновляются, как только запрос отработал - вставка продолжается.посмотрите локи в таблице pg_locks
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / поведение сервера: INSERT и count(*)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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