powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ase 12.5 переполнение transection log и locks
6 сообщений из 6, страница 1 из 1
Ase 12.5 переполнение transection log и locks
    #36619558
St.limp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется несколько команд вида "insert into TABLE select * from VIEW". Во время выполнения, если текущее количество записей превышает number of locks, происходит переполнение transaction log. Подскажите пожалуйста возможные варианты решения.
Вариант увеличить значение locks не подходит. Заранее спасибо.

Есть мысль вставлять данные по частям. Каким образом можно это сделать? (Как селектить, например, по 100 записей из VIEW?)
...
Рейтинг: 0 / 0
Ase 12.5 переполнение transection log и locks
    #36624545
GooSergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно попробовать в цикле по первичному ключу по N записей
SELECT @lim = COUNT(*) FROM Table1
SELECT @i = 1
WHILE @i< @lim
INSERT INTO Table2 (...) SELECT ... FROM Table1 WHERE [первичный ключ] BETWEEN @i TO @i+N
SELECT @i = @i+N
...
Рейтинг: 0 / 0
Ase 12.5 переполнение transection log и locks
    #36624548
GooSergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Лучше вместо COUNT использовать MAX(первичный_ключ)
...
Рейтинг: 0 / 0
Ase 12.5 переполнение transection log и locks
    #36633551
konst541
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GooSergey,
будьте внимательны необязательно постоянно увеличивается.
...
Рейтинг: 0 / 0
Ase 12.5 переполнение transection log и locks
    #36635949
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
set rowcount  100             -- размер порции

select @i =  1                -- для первого входа в цикл

while @i >  0 
begin

  INSERT INTO Table2 (...)  -- добавляем отсутствующие записи
  SELECT ... FROM Table1 
  WHERE not exists (SELECT ... FROM Table2 WHERE ...)

  select @i = @@rowcount    -- число записей обработанных в INSERT 

end

Если данные позволяют, то вместо условия
not exists (SELECT ... FROM Table2 WHERE ...)
можно использовать
<field Table1> not in (SELECT <field Table2> FROM Table2 WHERE ...)
...
Рейтинг: 0 / 0
Ase 12.5 переполнение transection log и locks
    #36652968
St.limp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь, но все эти способы не совсем подходят, т.к. процедура будет повторяться для нескольких таблиц, а у них у всех разные первичные ключи.

Проблема была решена с помощью утилиты bcp, но время работы значительно увеличилось. Поэтому от bcp отказался.

Возможны ли какие-нибудь ещё варианты решения?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Ase 12.5 переполнение transection log и locks
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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