ReplicatedMergeTree без нужды в перевставке?
а то данных накопилось много, а начальный выбор primary key был не очень удачным и памяти перестало хватать.
PK хочется переделать из
field, field2, hash(field2)
в
field, hash(field2)
хочется просто сделать так чтобы пропал field2 из PK для новых партов а старые тупо не трогать.
есть идеи?
а почему порядок не поменяется? hash(field2) совсем в другом порядке же будет чем просто field2
да, вы правы, что то я не подумал. Это было сделано для фильтрации по обоим полям. получается только с гранулярностью играться. (
хотя вопрос переформулирую вопрос, можно ли поменять ДДЛ чтоб новые парты или после optimize пропадал индекс не трогая старые? (не используя махинаций с merge engine)
я такого не видел/слышал, самому сейчас надо в большой таблице обновить ключ
да, я к тому что индекс старого будет работать для нового и поэтому можно не трогать
новую таблицу, старую переименовать, все накрыть engine=Merge
да, это "план Б" пока что... тут ещё такое дело, запрос часто одновременно получает данные которые рядом по field2... что если я хочу сортировать по ним, но держать индекс в памяти без этой колонки?
сортировать в запросе? вроде должно работать даже если поле не в индексе
в памяти держится primary key или order by? сортировать на вставке, чтобы они рядом лежали
primary key -- это поля в индексе и он в памяти order by это правило как сортировать, тут нет физического объекта. order by (a,b,c,d,e,f,g) primary key (a,b) сортируем строки в таблице согласно (a,b,c,d,e,f,g) в индекс идут только (a,b) -- файлик primary.idx -- храним в озу, фильтрация where чтобы найти марки использует его.
Обсуждают сегодня