Для кеширования массы промежуточных даных используется MySQL myisam таблица. Объём - до миллиона строк, сроки хранения - до недели. Постоянные обновления и удаления старых записей.
Всё бы хорошо, но очень быстро накладные расходы превышают 4Гб и таблица начинает давать отлуп "The table 'cache' is full".
Оптимизация таблицы длится около получаса, в течении которого все запросы, естественно, лочатся. Сервер стоит.
Кеширование на файловой системе не нравится из-за тормознутости и неудобства чистки. Даже на ReiserFS, даже при разбивке на вложенные каталоги по 1000 штук в каждом, просканировать миллион файлов... Да ещё и следить за залочками/шарингом... Это будут кранты.
Попробовать, что ли, разбить таблицу на десяток ... сотню мелких таблиц и оптимизировать их по одной? Или даже тупо дропать иногда (а кеш заново создастся, если не всё сразу дропать, а 1/100 - пережить доп. загрузку можно)
Или завести десяток-сотню sqlite-баз? Как у них с производительностью на массовом параллельном обращении/модификации?
Как с указанной проблемой в Postgre?