обработка большого количества временных маленьких файлов

\D соответствует нецифровым символам, поэтому вы можете сделать это:

with t(id, eventname) as (
    select 1, 'BIRTHDAY' from dual union all
    select 2, '4040404'  from dual union all
    select 3, '404'      from dual union all
    select 4, '404 PQR'  from dual union all
    select 5, 'NAMEDAY'  from dual )
select t.*, 
       case 
         when regexp_like(eventname, '\D')  then 'OTHER'
         when to_number(eventname) > 200000 then 'OFFER OVER 200'
         else 'OFFER BELOW 200'
       end type
  from t

Результат:

    ID EVENTNAME TYPE
------ --------- ---------------
     1 BIRTHDAY  OTHER
     2 4040404   OFFER OVER 200
     3 404       OFFER BELOW 200
     4 404 PQR   OTHER
     5 NAMEDAY   OTHER
7
задан itsadok 7 January 2009 в 17:02
поделиться

5 ответов

Когда Вы храните файл, сделайте символьную ссылку на вторую структуру каталогов, которая организована по дате, не по имени.

Получите свои файлы с помощью структуры "имени", удалите их использующий структуру "даты".

15
ответ дан 6 December 2019 в 08:46
поделиться

Принятие этого является ext2/3, который Вы попытались добавить в индексируемых каталогах? Когда у Вас будет большое количество файлов в каком-то конкретном каталоге, поиск будет мучительно не спешить удалять что-то.
используйте tune2fs-o dir_index для включения dir_index опции.
При монтировании файловой системы удостоверьтесь, что использовали noatime опцию, которая мешает ОС обновить информацию о времени доступа для каталогов (все еще должен изменить их).
Рассмотрение исходного сообщения, которым кажется, как будто у Вас только есть 2 уровня абстракции в файлы, что означает, что у Вас может быть огромное количество файлов в листовых каталогах. Когда будет больше чем миллион записей в них, Вы найдете, что поиски и изменения являются ужасно медленными. Альтернатива должна использовать более глубокую иерархию каталогов, сокращая количество объектов в каком-то конкретном каталоге, поэтому уменьшая стоимость поиска и обновлений конкретного отдельного каталога.

4
ответ дан 6 December 2019 в 08:46
поделиться

Reiserfs относительно эффективен при обработке маленьких файлов. Вы пробовали различные файловые системы Linux? Я не уверен в, удаляют производительность - можно рассмотреть форматирование (mkfs) вместо отдельного удаления файла. Например, можно создать другую файловую систему (cache1, cache2...) в течение каждого рабочего дня.

1
ответ дан 6 December 2019 в 08:46
поделиться

Как насчет этого:

  • Имейте другую папку, названную, скажем, "ToDelete"
  • Когда Вы добавляете новый объект, получаете сегодняшнюю дату и ищете подпапку в "ToDelete", который имеет имя, показательное из текущей даты
  • Если это не там, создайте его
  • Добавьте символьную ссылку к объекту, который Вы создали в сегодняшней папке
  • Создайте задание крона, которое переходит к папке в "ToDelete", который имеет корректную дату, и удалите все папки, которые связаны.
  • Удалите папку, которая содержала все ссылки.
1
ответ дан 6 December 2019 в 08:46
поделиться

Как насчет того, чтобы иметь таблицу в Вашей базе данных, которая использует хеш в качестве ключа. Другое поле затем было бы названием файла. Тем путем файл может храниться связанным с датой способом для быстрого удаления, и база данных может использоваться для нахождения что файл, основанный на местоположении на хеше в быстрой моде.

0
ответ дан 6 December 2019 в 08:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: