Ошибка при сортировке
Добавлено: 16 авг 2006, 21:02
Firebird 1.5 Linux. Сервер падал, админы его восстановили, но стала возникать ошибка
I/O error for file "", Error while trying to open file, Permission denied
Ошибка возникает только при сортировке в запросе, т.е. использовании order by, причем исключительно если используется для сортировки поле, по которому нет индекса.
Например:
1. select * from airport, сортировки нет, работает
2. select * from airport order by towniata, сортировка по полю, по которому имеется индекс, работает
3. select * from airport order by aprus, сортировка по полю, по которому нет индекса, НЕ работает
Но 3ий вариант может работать, если в выборке получается не очень много записей
select * from airport where aprus starting with 'Ф' order by aprus, вот так работает, выбирается что-то порядка 40 записей (вместо 1300).
Еще один способ заставить работать неработающий 3ий запрос - сократить количество выбираемых полей.
select iata, towniata, icao, aprus from airport order by aprus еще работает
select iata, towniata, icao, aprus, apeng from airport order by aprus уже не работает
Та же картина наблюдается и на других таблицах.
Без сортировки по Leg проходит запрос с 1.01.2003 по сегодня, сотни тысяч записей, с сортировкой по неиндексному полю выбирается буквально 5-10 дней, порядка 400 записей, не больше.
Если в запрос подключаются другие таблицы, то количество записей, которые еще выбираются с сортировкой по неиндексированному полю, сокращается.
В общем, версия следующая - при небольшом объеме выборки сервер сортирует данные в памяти, если данных много, он пытается создать временный файл, но у него нет на это прав (восстанавливая работоспособность админы что-то недокрутили). Надо проверить, есть ли полные права у сервера на каталог, где создаются временные файлы.
Есть какие-то другие версии? Админы говорили, что было что-то с RAIDoм и восстанавливая его никакие права доступа они не меняли.
Что скажете про мою версию? Увы, проверить ее я сейчас не могу - сисадминов уже нет, а у меня прав на доступ к серверу нет, и вообще я в отпуске, жена пришла с работы, я детей на нее оставил и примчался к пол-восьмому вечера на работу. Буду признателен за любые комментарии, заранее спасибо, т.к. не уверен, смогу ли на даче с КПК ответить.
Георгий
I/O error for file "", Error while trying to open file, Permission denied
Ошибка возникает только при сортировке в запросе, т.е. использовании order by, причем исключительно если используется для сортировки поле, по которому нет индекса.
Например:
1. select * from airport, сортировки нет, работает
2. select * from airport order by towniata, сортировка по полю, по которому имеется индекс, работает
3. select * from airport order by aprus, сортировка по полю, по которому нет индекса, НЕ работает
Но 3ий вариант может работать, если в выборке получается не очень много записей
select * from airport where aprus starting with 'Ф' order by aprus, вот так работает, выбирается что-то порядка 40 записей (вместо 1300).
Еще один способ заставить работать неработающий 3ий запрос - сократить количество выбираемых полей.
select iata, towniata, icao, aprus from airport order by aprus еще работает
select iata, towniata, icao, aprus, apeng from airport order by aprus уже не работает
Та же картина наблюдается и на других таблицах.
Без сортировки по Leg проходит запрос с 1.01.2003 по сегодня, сотни тысяч записей, с сортировкой по неиндексному полю выбирается буквально 5-10 дней, порядка 400 записей, не больше.
Если в запрос подключаются другие таблицы, то количество записей, которые еще выбираются с сортировкой по неиндексированному полю, сокращается.
В общем, версия следующая - при небольшом объеме выборки сервер сортирует данные в памяти, если данных много, он пытается создать временный файл, но у него нет на это прав (восстанавливая работоспособность админы что-то недокрутили). Надо проверить, есть ли полные права у сервера на каталог, где создаются временные файлы.
Есть какие-то другие версии? Админы говорили, что было что-то с RAIDoм и восстанавливая его никакие права доступа они не меняли.
Что скажете про мою версию? Увы, проверить ее я сейчас не могу - сисадминов уже нет, а у меня прав на доступ к серверу нет, и вообще я в отпуске, жена пришла с работы, я детей на нее оставил и примчался к пол-восьмому вечера на работу. Буду признателен за любые комментарии, заранее спасибо, т.к. не уверен, смогу ли на даче с КПК ответить.
Георгий