Удаление/обновление большого RT индекса.

Господа, нужна помощь с RT индексами, а точнее необходимо решение, которое позволит быстро обновлять или полностью удалять индекс.

Имеем: 270 млн записей, одна колонка, без атрибутов. При первом запуске создаем индекс на лету вызывая /cli с такими параметрами:

    CREATE TABLE {index_name} (
        data text
    ) type='rt' charset_table='0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F' min_infix_len='3' 
    min_prefix_len='3' dict='keywords' expand_keywords='1' index_exact_words='1'

Затем добавляем в индекс батчами по 1 млн в /bulk. Асинхронно в 5 потоков на 5 ядер ЦП, занимает около 40 мин для 270 млн строк.

Далее раз в сутки нам нужно обновить данные, и тут проблема. Если с добавлением все ок, то удаление 200к строк из индекса занимает неприличное кол-во времени.

Пробовал truncate всей таблицы - тоже очень долго. Drop table тоже долго, так как сначала выполняется truncate, если я правильно понял мануал.

Сейчас рабочее и наиболее быстрое решение остановить manticore, удалить файлы индексов и снова за 40 минут загрузить актуальные данные. Но это не вариант для прода. Есть идеи как быстро сделать обновление или моментальное удаление индекса не прибегая к ручному труду в виде остановки/запуска manticore с взаимодействием с файлами индекса?

Не повторяется:

mysql> select count(*) from name;
+-----------+
| count(*)  |
+-----------+
| 100000000 |
+-----------+
1 row in set (0.00 sec)
--- 1 out of >=1 results in 0ms ---

mysql> delete from name where id <= 200000;
Query OK, 200000 rows affected (0.22 sec)

mysql> select count(*) from name;
+----------+
| count(*) |
+----------+
| 99800000 |
+----------+
1 row in set (0.00 sec)
--- 1 out of >=1 results in 0ms ---

Нужно воспроизведение или хотя бы:

  • searchd log
  • когда была попытка delete/drop/truncate
  • show threads option format=all перед попыткой