powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Журнал транзакций переполнен или вопрос производительности
6 сообщений из 6, страница 1 из 1
Журнал транзакций переполнен или вопрос производительности
    #36538176
GarF1eld!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица примерно такого вида
Код: plaintext
1.
2.
CREATE TABLE Table1(Time TIMESTAMP  NOT NULL , 
	Price DECIMAL ( 18 ,  2 )  NOT NULL)
Смысл в том, что вычисляется минимальное и максимальное значение Price и этот интервал разбивается на несколько подинтервалов, и для каждого считается сколько записей туда входит. То есть выдает что-то вида
0 - 9.99 14 записей
10 - 19.99 54 записей
и т д.

Появилась необходимость ограничить интервал расчета по времени и по цене. Для этого создаю временную таблицу, сбрасываю туда данные, которые проходят по условию. А затем на этой таблице вычисляю мин и макс значение Price и т д.

Проблема в том, что в таблице более 6 млн записей и при большом объеме выборки пишет "SQL0964C Журнал транзакций для базы данных заполнен. SQLSTATE=57011 ". Изменил logfilsiz для базы на 5000, перезапустил сервисы. Оказалось, что и 5000 мало. Думаю нужно ли поднимать дальше или стоит подумать о том, чтобы немного по другому делать расчет: обойтись без промежуточной таблицы, просто в каждом запросе через WHERE задавать условия.

С одной стороны мне кажется(по крайней мере казалось :)), что с промежуточной таблицей должно работать быстрее, так как число элементов в ней меньше, но с другой стороны это же какие затраты на перекачку данных в промежуточную таблицу. Плюс ко всему в исходной таблице имеются индексы как на Time, так и на Price.

Подскажите, какой из 2х вариантов будет производительнее
...
Рейтинг: 0 / 0
Журнал транзакций переполнен или вопрос производительности
    #36538181
GarF1eld!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл добавить, что больше будут преобладать относительно небольшие интервалы: где-то до 30000 записей
...
Рейтинг: 0 / 0
Журнал транзакций переполнен или вопрос производительности
    #36538287
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Начните с версии DB2. Есть много разных версий, и у них разные возможности.

Продолжите тем, что вы имеете в виду под "временной таблицей". Странно слышать, что заполнение временной таблицы так повлияло на логи. Вы использовали CREATE TABLE вместо DECLARE GLOBAL TEMPORARY TABLE?

Потом приведите свой запрос. Мне кажется очевидным, что никакая временная таблица вам не нужна, но я мог неправильно понять условие.
...
Рейтинг: 0 / 0
Журнал транзакций переполнен или вопрос производительности
    #36538340
GarF1eld!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия Db2 9.7 express-c
Запросы следующего вида:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DECLARE GLOBAL TEMPORARY TABLE SESSION.Ltemp(CT Timestamp,
         CP DECIMAL( 18 , 2 ))
         ON COMMIT PRESERVE ROWS;

INSERT INTO SESSION.Ltemp
SELECT *
FROM Table1
WHERE CT >= @from AND CT <= @to
    AND CP >= @bottom  AND CP <= @top 
ORDER BY CT ASC; 
...
Рейтинг: 0 / 0
Журнал транзакций переполнен или вопрос производительности
    #36540894
Victor Metelitsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Там у DECLARE GLOBAL TEMPORARY TABLE ещё опция NOT LOGGED есть...
...
Рейтинг: 0 / 0
Журнал транзакций переполнен или вопрос производительности
    #36546408
GarF1eld!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
Через промежуточную таблицу оказалось в разы быстрее
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Журнал транзакций переполнен или вопрос производительности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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