Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Журнал транзакций переполнен или вопрос производительности
|
|||
|---|---|---|---|
|
#18+
Есть таблица примерно такого вида Код: plaintext 1. 2. 0 - 9.99 14 записей 10 - 19.99 54 записей и т д. Появилась необходимость ограничить интервал расчета по времени и по цене. Для этого создаю временную таблицу, сбрасываю туда данные, которые проходят по условию. А затем на этой таблице вычисляю мин и макс значение Price и т д. Проблема в том, что в таблице более 6 млн записей и при большом объеме выборки пишет "SQL0964C Журнал транзакций для базы данных заполнен. SQLSTATE=57011 ". Изменил logfilsiz для базы на 5000, перезапустил сервисы. Оказалось, что и 5000 мало. Думаю нужно ли поднимать дальше или стоит подумать о том, чтобы немного по другому делать расчет: обойтись без промежуточной таблицы, просто в каждом запросе через WHERE задавать условия. С одной стороны мне кажется(по крайней мере казалось :)), что с промежуточной таблицей должно работать быстрее, так как число элементов в ней меньше, но с другой стороны это же какие затраты на перекачку данных в промежуточную таблицу. Плюс ко всему в исходной таблице имеются индексы как на Time, так и на Price. Подскажите, какой из 2х вариантов будет производительнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2010, 20:57 |
|
||
|
Журнал транзакций переполнен или вопрос производительности
|
|||
|---|---|---|---|
|
#18+
забыл добавить, что больше будут преобладать относительно небольшие интервалы: где-то до 30000 записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2010, 20:59 |
|
||
|
Журнал транзакций переполнен или вопрос производительности
|
|||
|---|---|---|---|
|
#18+
Начните с версии DB2. Есть много разных версий, и у них разные возможности. Продолжите тем, что вы имеете в виду под "временной таблицей". Странно слышать, что заполнение временной таблицы так повлияло на логи. Вы использовали CREATE TABLE вместо DECLARE GLOBAL TEMPORARY TABLE? Потом приведите свой запрос. Мне кажется очевидным, что никакая временная таблица вам не нужна, но я мог неправильно понять условие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2010, 22:37 |
|
||
|
Журнал транзакций переполнен или вопрос производительности
|
|||
|---|---|---|---|
|
#18+
Версия Db2 9.7 express-c Запросы следующего вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2010, 23:35 |
|
||
|
Журнал транзакций переполнен или вопрос производительности
|
|||
|---|---|---|---|
|
#18+
Там у DECLARE GLOBAL TEMPORARY TABLE ещё опция NOT LOGGED есть... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2010, 21:30 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=36538176&tid=1602821]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
74ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 185ms |

| 0 / 0 |
