Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Увеличение производительности / 16 сообщений из 16, страница 1 из 1
20.11.2006, 18:48
    #34141920
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Есть ПостгреСКЛ на хостинге, необходимо в него подгружать данные причём постоянно. Данные в него подгружаются с МССКЛ2000, я установил ОДБС драйвер для Постгра, всё работает хорошенько, только скорость хромает. Запросы на выборку - если не летают, но ими я вполне доволен. Но вот INSERT... глохнет, каких-то 20 строк около 2минут всталяет...:( Канал в инет 1024- входящий, 512 - исходящий. Правда работаю с базой через ШТТП тунель, т.к. админ не могёт настроить прямой доступ к инету:) При инсерте канал свободный, я даже пробовал паралельно файл закачивать на ФТП сервак(450кил) - меньше минуты. Может кто подскажет как мне оптимизировать всё это дело? Может там в настройках ОДБС драйвера проблемма?
...
Рейтинг: 0 / 0
20.11.2006, 19:42
    #34142002
СергейК
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
lonejan Но вот INSERT... глохнет, каких-то 20 строк около 2минут всталяет...:(

A vy INSERT'y vnutri odnoi transactsii zapuskaete ? (esli net, to eto mojet pomoch'...)
...
Рейтинг: 0 / 0
20.11.2006, 19:47
    #34142013
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Попробуйте эти же 20 инсертов запустить напрямую на сервере. Т.е. точно выявите в сети дело или в сервере/базе.
( Да и сколько по обему эти 20 инсертов занимают? Хоть канал и свободный, запросы эти тоже могут мегабайты занимать!)
...
Рейтинг: 0 / 0
21.11.2006, 10:02
    #34142633
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Нет, это не 20 запросов, это одним запросом вставка 20 строк. Типа
Код: plaintext
INSERT INTO customers(login, pass, name) SELECT sp1081, sp1082, descr from sc51 where code< 20 
Вот типа этого запрос. Хотя есть ещё одно НО, там ещё есть поле в автоинкрементом(SERIAL) - cid, може это из-за него так притупливает?
...
Рейтинг: 0 / 0
21.11.2006, 10:16
    #34142683
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
сделайте
Код: plaintext
1.
explain analyze
 select sp1081, sp1082, descr from sc51 where code <  20 
Код: plaintext
1.
2.
explain analyze
 insert into customers ( login, pass, name )
 select sp1081, sp1082, descr from sc51 where code <  20 
...
Рейтинг: 0 / 0
21.11.2006, 10:29
    #34142737
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
А что за explain analyze?
У меня Постгре прилинкован к MSSQL2000. SC51 таблица локальная, из 1Ски, которая на этом MSSQL и находится.
...
Рейтинг: 0 / 0
21.11.2006, 10:43
    #34142787
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
lonejanА что за explain analyze? explain analyze

lonejanУ меня Постгре прилинкован к MSSQL2000. SC51 таблица локальная, из 1Ски, которая на этом MSSQL и находится.Не понял. Таблицы customers и sc51 находятся в постгресовой базе?
...
Рейтинг: 0 / 0
21.11.2006, 10:47
    #34142810
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Оо. Дорогие мои...=) Убрал автоинкремент, 20 записей - 55сек.
...
Рейтинг: 0 / 0
21.11.2006, 10:49
    #34142819
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Нет... кастомерс только на Постгре, а СЦ51 на МССКЛ2000, постгре прилинкован к МССКЛ2000.
Код: plaintext
INSERT INTO openquery(jc,'select * from jc.customers')(cid, code, login, pass, name) SELECT cast(code as int) as cid, RTrim(LTrim(code)), RTrim(LTrim(sp1081)) AS login, RTrim(LTrim(sp1082)) AS pass, Left(RTrim(LTrim(descr)),  250 ) as name FROM SC51 where code< 20 
...
Рейтинг: 0 / 0
21.11.2006, 10:52
    #34142833
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
И ещё здаётся мне, что так как я делаю через openquery(jc,'select * from jc.customers')... То сначала выполняется эта выборка... и соответственно передаётся мне, а потом уже дальше, что надо сделать. Надо снифером глянуть.
...
Рейтинг: 0 / 0
21.11.2006, 11:01
    #34142862
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
lonejanНет... кастомерс только на Постгре, а СЦ51 на МССКЛ2000, постгре прилинкован к МССКЛ2000.Кажется, что вам надо разбираться с линковкой к МССКЛ2000, какие именно действия производит MSSQL при обработке запроса "insert into customers ... select ... from sc51 ...", какие при этом запросы передаются постгресу.

lonejanОо. Дорогие мои...=) Убрал автоинкремент, 20 записей - 55сек.ИМХО, это должно работать менее секунды.
...
Рейтинг: 0 / 0
21.11.2006, 11:11
    #34142897
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Прикрепил план выполнения при
Код: plaintext
delete from openquery(jc,'select * from jc.customers')
Так же попробовал вставку не 20, а 10 записей. Время выполнения - 38сек. Соответственно, можно предположить следующее 55-38=17сек на 10 записей, 38-17=21сек, на что она уходит...? Запостил сюда, потому, что я считаю, что всё дело в реализации ODBC драйвера для Постгре. Я тоже считаю, что он длжно выполняться секунды, и мне в основном надо будет выгружать данные из МССКЛ2000 в Постгре... Так не хочу это делать через ж0пу...:( По ФТП или ещё как-то...
...
Рейтинг: 0 / 0
21.11.2006, 11:17
    #34142921
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Что это за RemoteScan? Терзают смутные сомнения, что это сейчас ещшё всё гладковато=) Пока таблица маленькая, а потом этот ремоте скан будет занимать часы...=)
...
Рейтинг: 0 / 0
21.11.2006, 12:03
    #34143168
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
ВЫВОДЫ ДЛЯ ПОТОМКОВ=)
Короче так, я вставлял в эту таблицу по 10 записей, каждый раз число записей в таблице на сервере увеличивалось, и каждый раз запрос выполнялся на несколько секунд дольше(5-10).
Настройка ODBC для PostgreSQL:
Настройка ODBC для PostgreSQL статья
Далее рассказываю, что я делал для увеличения производительности:
Зашёл в настройки источника данных, там есть кнопка DataSourсe, клацаешь по ней, открывается форма с галочками - убрать всё, кроме: KSQO (Keyset Query Optimization), Disable Genetic Optimizer - размер кэша ставим - 1. Цопаем на Page2, там тоже всё киляем, кроме: Server side prepare, LF <->CR&LF, Level of rollback on errors - Statement. Это всё, после этого у меня скорость повысилась с 1мин20сек - до 17-22сек - 10 строк. А до этого время выполнения каждого последжующего запроса возростало. Так же я выполнял запросы не через openquery(jc,'select * from jc.customers'), а так - jc..jc.customers, где [имя прилинкованого сервера]..[имя схемы].[имя таблицы]. Всем спасибо и удачи!;)
...
Рейтинг: 0 / 0
21.11.2006, 14:49
    #34143864
Jelis
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Все равно, что-то у вас тут дело темное. Такие запросы должны в мгновения обрабатываться! И не в одбц дело (не тока в нем) - похоже что у вас вся постгресовская таблица мссклом гоняеться туда-сюда. Или еще какой сюрприз :-) Но помоемму вам больше помогут в форуме мсскла.
...
Рейтинг: 0 / 0
21.11.2006, 14:52
    #34143877
lonejan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Увеличение производительности
Jelisпохоже что у вас вся постгресовская таблица мссклом гоняеться туда-сюда.
Я тоже так подозреваю, т.к. даже запрос на удаление 999 строк булькал минут 11, 10 строк - 10сек
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Увеличение производительности / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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