Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
ситуация такая: есть прилжение, которое читает данные из базы mssqlserver и пишет в базу PG 8.2.4. Точнее коннектится к PGPool, за которым стоят два сервера Ubuntu с PG 8.2.4. Это приложение делает только инсерты. Всего в исходной базе 8 млн записей, котрые надо прочитать и вставить в PG. Приложение показывает к-во вставленных записей. 1. после того как прилождение проработало часов 6 и вставило 3,5 млн записей оно стало работать заметно медленнее 2. Как только в терминале в psql я выполняю команду select count(*) from xprop сразу вижу как приложение чуть ли не останавливается и после того как команда выполнена - продолжает вставлять. Гуру, ваши коментарии? .... Где, что и как улучшить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 10:37 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Winnipuh 2. Как только в терминале в psql я выполняю команду select count(*) from xprop сразу вижу как приложение чуть ли не останавливается и после того как команда выполнена - продолжает вставлять. Гуру, ваши коментарии? .... Где, что и как улучшить? Я не гуру, но посмотреть могу (с) почти из анекдота. Очень, очень ФАКовый вопрос. SELECT count(*) FROM bigtable - есть зло для PG. По скольку ФАК+поиск это слишком тяжело, то в кратце: сделать отдельную таблицу которую триггерно на INSERT обновлять и брать значения оттуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 11:09 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Winnipuh 2. Как только в терминале в psql я выполняю команду select count(*) from xprop сразу вижу как приложение чуть ли не останавливается и после того как команда выполнена - продолжает вставлять. Гуру, ваши коментарии? .... Где, что и как улучшить? Я не гуру, но посмотреть могу (с) почти из анекдота. Очень, очень ФАКовый вопрос. SELECT count(*) FROM bigtable - есть зло для PG. По скольку ФАК+поиск это слишком тяжело, то в кратце: сделать отдельную таблицу которую триггерно на INSERT обновлять и брать значения оттуда. это я (уже ;-)) понимаю, я count(*) выбрал в качестве примера. Оно то зло, но не до такой же степени, чтобы сервер тормозил и все клиенты ждали? ... А если я я буду делать обычный селект, тормозов не будет? Если будет 100 коннектов? .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 11:14 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Winnipuh это я (уже ;-)) понимаю, я count(*) выбрал в качестве примера. Оно то зло, но не до такой же степени, чтобы сервер тормозил и все клиенты ждали? ... А если я я буду делать обычный селект, тормозов не будет? Если будет 100 коннектов? .. Ну пример - так себе. Он малость непоказателен. На самом деле - он делает всего лишь seqscan по таблице. А дисковая наверняка сильно загружена - вот все и тормозит благодаря "дерганью" диска. Благодаря непрерывным модификациям файл/таблица не эффективно кешируются (ИМХО). Обычный селект, т.е. SELECT 1+1 - тормозить не будет. более сложные - смотреть нужно, планы изучать, моделировать. 100 коннектов SELECT 1+1 - скорее всего тоже не будут. 100 коннектов бывают разные. Если это будут клиенты каждый из которых множественно с блокировками будет делать перерасчет на 1 минуту (в выделнном режиме), то 100 таких конкурентных транзакций будут требовать хорошего сервера и тащательной продумки архитектуры. ЗЫ А на практике - моделировать нужно. Ибо есть мелочи которые могут вылезти лично у Вас при масштабировании в которые никто раньше не упирался. Например - выпадение таблицы из кеша из-за его нехватки, "кривые" seqscan'овые запросы и т.д. Т.е. оценки будут из серии "лечить по фотографии", и могут быть весьма далеки от Вашей практики. ИМХО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:04 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
В догонку - вспомните свой пост про первый и последующие запуски поиска с использованием индекса. 1-й 2 минуты, 2-й 2 секунды. Если у Вас хватит мозгов ( в смысле оперативной памяти) на "правильный" кеш - то будет счастие. Если все 100 клиентов будут винт дергать - ИМХО может и сдохнуть нафик. Тут даже скази не поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:12 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
2 Andrey Daeron спасибо.... в том то и вопрос, можно ли надеяться на PG для работы 100-300 коннектов Вопрос хардваре не стоИт, хорошие серверы будут куплены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 12:12 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Winnipuh 1. после того как прилождение проработало часов 6 и вставило 3,5 млн записей оно стало работать заметно медленнее а не медленно ли за 6 часов всеголишь 3.5 млн записей ? я бы сделал не через insert, а выгрузил бы из mssql в файл и загрузил бы командой copy ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 15:38 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
905 Winnipuh 1. после того как прилождение проработало часов 6 и вставило 3,5 млн записей оно стало работать заметно медленнее а не медленно ли за 6 часов всеголишь 3.5 млн записей ? я бы сделал не через insert, а выгрузил бы из mssql в файл и загрузил бы командой copy медленно.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 15:59 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Winnipuh2 Andrey Daeron спасибо.... Незачто :) Winnipuh в том то и вопрос, можно ли надеяться на PG для работы 100-300 коннектов Вопрос хардваре не стоИт, хорошие серверы будут куплены. Блин, ну что я могу сказать - есть средства аффтоматизации тестирования нагрузки. Берем и нагружаем. Сильно нагружаем. Еще сильнее. Наблюдаем, рисуем графики. Прогнозируем объемы. Сводим все в месте и получаем ответ. Примеры использования на афигенных объемах и сложных БД есть. Примеры - сайт самого постгреса (вместе с поисковыми технологиями) и еще куча всего озвучено было на форуме. ЗЫ А медленно - там же индексов немеряно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 19:08 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron Winnipuh2 Andrey Daeron спасибо.... Незачто :) Winnipuh в том то и вопрос, можно ли надеяться на PG для работы 100-300 коннектов Вопрос хардваре не стоИт, хорошие серверы будут куплены. Блин, ну что я могу сказать - есть средства аффтоматизации тестирования нагрузки. Берем и нагружаем. Сильно нагружаем. Еще сильнее. Наблюдаем, рисуем графики. Прогнозируем объемы. Сводим все в месте и получаем ответ. Примеры использования на афигенных объемах и сложных БД есть. Примеры - сайт самого постгреса (вместе с поисковыми технологиями) и еще куча всего озвучено было на форуме. ЗЫ А медленно - там же индексов немеряно? не так много, но длинные строки полнтекстово индексируются. Буду в Киеве - с меня пыво. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 19:31 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Winnipuh не так много, но длинные строки полнтекстово индексируются. Буду в Киеве - с меня пыво. ;) Ну вот я и думаю, что очень много времени идет на построение (возможно перстроение иногда) этого полнотекстового индекса. ЗЫ А на тесты внятные было бы очень интерестно взглянуть. Не так много людей на этом форуме имеют 100-200 коннектов к БД. ЗЗЫ А пыво это можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 19:47 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
http://www.postgresql.org/docs/8.2/interactive/populate.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2007, 20:43 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
вот все равно не могу смириться... Есть главная partitioned таблица t, и 4 выведенных из нее t1, t2, t3, t4. Есть приложение, которое делает инсерты в главную таблицу. В конкретный момент времени идет вставка в таблицу и точнее в t3 . Даю запрос: select count(*) from t2 ; Сразу вижу как работа приложения останавливается, счетчики не обновляются, как только запрос отработал - вставка продолжается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 14:33 |
|
||
|
поведение сервера: INSERT и count(*)
|
|||
|---|---|---|---|
|
#18+
Winnipuhдлинные строки полнтекстово индексируютсяобнвление полнотекстовых индексов - относительно медленная операция. может быть делать drop index; массированный insert; create index. WinnipuhСразу вижу как работа приложения останавливается, счетчики не обновляются, как только запрос отработал - вставка продолжается.посмотрите локи в таблице pg_locks ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.10.2007, 14:51 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34823612&tid=2004982]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
81ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 430ms |

| 0 / 0 |
