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

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

lonejanУ меня Постгре прилинкован к MSSQL2000. SC51 таблица локальная, из 1Ски, которая на этом MSSQL и находится.Не понял. Таблицы customers и sc51 находятся в постгресовой базе?
...
Рейтинг: 0 / 0
Увеличение производительности
    #34142810
lonejan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оо. Дорогие мои...=) Убрал автоинкремент, 20 записей - 55сек.
...
Рейтинг: 0 / 0
Увеличение производительности
    #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
Увеличение производительности
    #34142833
lonejan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И ещё здаётся мне, что так как я делаю через openquery(jc,'select * from jc.customers')... То сначала выполняется эта выборка... и соответственно передаётся мне, а потом уже дальше, что надо сделать. Надо снифером глянуть.
...
Рейтинг: 0 / 0
Увеличение производительности
    #34142862
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lonejanНет... кастомерс только на Постгре, а СЦ51 на МССКЛ2000, постгре прилинкован к МССКЛ2000.Кажется, что вам надо разбираться с линковкой к МССКЛ2000, какие именно действия производит MSSQL при обработке запроса "insert into customers ... select ... from sc51 ...", какие при этом запросы передаются постгресу.

lonejanОо. Дорогие мои...=) Убрал автоинкремент, 20 записей - 55сек.ИМХО, это должно работать менее секунды.
...
Рейтинг: 0 / 0
Увеличение производительности
    #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
Увеличение производительности
    #34142921
lonejan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что это за RemoteScan? Терзают смутные сомнения, что это сейчас ещшё всё гладковато=) Пока таблица маленькая, а потом этот ремоте скан будет занимать часы...=)
...
Рейтинг: 0 / 0
Увеличение производительности
    #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
Увеличение производительности
    #34143864
Jelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все равно, что-то у вас тут дело темное. Такие запросы должны в мгновения обрабатываться! И не в одбц дело (не тока в нем) - похоже что у вас вся постгресовская таблица мссклом гоняеться туда-сюда. Или еще какой сюрприз :-) Но помоемму вам больше помогут в форуме мсскла.
...
Рейтинг: 0 / 0
Увеличение производительности
    #34143877
lonejan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jelisпохоже что у вас вся постгресовская таблица мссклом гоняеться туда-сюда.
Я тоже так подозреваю, т.к. даже запрос на удаление 999 строк булькал минут 11, 10 строк - 10сек
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Увеличение производительности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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