FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
GrafitIzh
Сообщения: 5
Зарегистрирован: 16 авг 2010, 10:35

FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Сообщение GrafitIzh » 16 авг 2010, 10:51

Сервер с FB 1.5.6, Win 2003 Ent
Для файлов сортировки firebird выделен отдельный логический диск в 4 гига (на самом деле он виртуальный, висит в оперативке, устроен с помощью программы RAMDisk)
База большая, обслуживает аналитическое приложение, и запросы к ней огромны, столкнулись с проблемой - 4 гига не хватает на сортировочные файлы.

Значение TempDirectories в firebird.conf:
TempDirectories = e:\fbsort 4250000000;c:\Temp

По идее изначально используется место на диске Е, при нехватке оставшиеся файлы сортировки размещаются в С:\Temp, где места в избытке (более 100 Гб). На практике диск Е забивается полностью, идет создание файлов сортировки в C:\Temp, после чего выдается сообщение

I/O error for file "e:\fbsort\fb_sort_xxxxxx"
Error while trying to write to file
Нет бумаги в принтере.

Пробовали менять значение TempDirectories на следующие:
TempDirectories = e:\fbsort; c:\Temp
TempDirectories = e:\fbsort;c:\Temp
TempDirectories = e:\;c:\Temp

Не помогает... запрос корректно отрабатывает только со значением TempDirectories = c:\Temp, когда все файлы лежат в одном месте.

Но тогда теряются все преимущества в скорости виртуального жесткого диска... чего очень не хочется, ибо клиент не хочет ждать отчет 2 часа вместо 30 минут.

Помогите советом..

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Сообщение kdv » 16 авг 2010, 13:57

Не помогает... запрос корректно отрабатывает только со значением
после изменения конфига ФБ надо перезапускать, если суперсервер. Для классика изменения в конфиге увидят только новые коннекты.
Если речь про темп на рам-диске, то понятное дело, рам диск должен существовать как диск ДО старта ФБ.

Про бумагу в принтере - да, винда так пишет.
Для файлов сортировки firebird выделен отдельный логический диск в 4 гига (на самом деле он виртуальный, висит в оперативке, устроен с помощью программы RAMDisk)
ибо клиент не хочет ждать отчет 2 часа вместо 30 минут.
нафига? Вы сравнивали скорость без и с рам диском? И что, большая разница?
совсем худой диск C:? С настройками размера памяти для сортировки экспериментировали?

что это за запросы такие, которые по 30 минут выполняются? может быть, стоит подумать о хранении промежуточных вычислений?

GrafitIzh
Сообщения: 5
Зарегистрирован: 16 авг 2010, 10:35

Re: FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Сообщение GrafitIzh » 16 авг 2010, 16:36

Рам-диск существует до старта firebird. Естественно СУБД перезапускали при каждой смене TempDirectories. Клиент каждый раз новый.
что это за запросы такие, которые по 30 минут выполняются? может быть, стоит подумать о хранении промежуточных вычислений?
Скорость сравнивали.
30 минут строится отчет, который использует данные из 10 различных баз данных. каждая база - аналитическое хранилище данных с метауровнем информации. Менять структуру БД мы не можем, ровно как и оптимизировать запросы - их делает приложение с закрытым для нас бинарным кодом.
Могу сказать лишь одно - 30-минутные запросы действительно есть, и от этого никуда не деться. Это зависит не от нас.

Работаем с тем что есть, а есть у нас настройки firebird.
С настройками размера памяти для сортировки эксперименты не ставили, поэкспериментируем, спасибо.

Однако суть проблемы не в этом. Суть в том, что невозможно использовать 2 папки под временные файлы субд.
Сталкивался кто-нибудь с данной проблемой и как её решал?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Сообщение kdv » 17 авг 2010, 01:42

4250000000
размер сорт-файлов в момент ошибки на e: какой? файловая система на рам-диске какая?

я тут дальше хотел вопросов назадавать, но потом подумал - RAMDisk это же сторонняя фишка, так?
Так что, способность ФБ 1.5.6 работать с несколькими темп-каталогами проверяется легко - создаете несколько темпов типа
C:\temp\1;c:\temp\2 и так далее, по 100мб, и выполняете запрос который нагенерит много темп-данных. Типа

select cast(e.emp_no as varchar(100))||e.last_name
from e employee, e1 employee, e2 employee, ... e5 employee
order by 1

в employee вроде 43 записи, значит будет 43 в 5 степени записей сортироваться (при условии plan sort)

если темпы будут по очереди заполняться - замечательно. Потом добавляете первым или вторым этот ramdisk, и опять проверяете.

p.s. думаю что рамдиск глючит. Насчет запросов и темп-файлов больше 4 гиг - сочувствую.

GrafitIzh
Сообщения: 5
Зарегистрирован: 16 авг 2010, 10:35

Re: FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Сообщение GrafitIzh » 18 авг 2010, 09:45

Размер сорт-файлов показывает как 0, если смотреть на свободное место на диске - на нем остается около 60 мегабайт места, после чего сорт-файлы уже создаются в C:\temp
файловая система на ram-disk естественно NTFS, диск переформатирован средствами Win.

За совет с проверкой временных каталогов - спасибо, сегодня буду экспериментировать.

Пока проверяю следующий вариант - памяти для сортировки дал firebird'у 1 гиг, и рам-диск оставил на 4 гига.
Если запросы не будут в сумме вылезать за 5 гигабайт сорт-файлов - будет здорово.. хотя решение это временное, подпорка.

GrafitIzh
Сообщения: 5
Зарегистрирован: 16 авг 2010, 10:35

Re: FB 1.5.6 Нет бумаги в принтере, ошибка TempDirectories

Сообщение GrafitIzh » 18 авг 2010, 17:53

К firebird'у претензий нет.
Пробовал разделять папки для сорт-файлов на разные диски, которые существуют в реальности. Всё работает без проблем.
Значит дело было в ramdisk'е.

Ответить