моей ситуации, ибо одна голова хорошо, а несколько лучше.
Есть кластер с Кликом, база, таблицы по паре-тройке сотен гигабайт. Моя задача - реализация выборок из этих таблиц.
Но таблицы с определенной периодичностью обновляются, причем не мной, а вливаются извне сторонним лицом с некоторой непредсказуемой периодичностью. Можно считать, что таблицы каждый раз уничтожаются, создаются и полностью заполняются данными. Разумеется работать с такой таблицей - удовольствие не очень, посему предполагается, пускай извне данные вливаются в некие буферные таблицы, а я уже буду копировать данные из них внутри Клика в их рабочие копии тогда, когда нужно и можно. Пока видится три варианта
- select... insert (имхо треш)
- attach.. detach partitions от буферной к основной таблице
- rename table / удалим основную таблицу, переименуем буферную таблицу в основную, создадим буферную...
какой способ наиболее разумно попробовать? или может есть какой то другая... модель поведения в таких условиях?
> Можно считать, что таблицы каждый раз уничтожаются, создаются и полностью заполняются данными. это действительно происходит? если нет, то почему так можно считать? как влияет инсерт на извлечение выборок?
производится TRUNCATE TABLE и полная перезаливка. Как влияет... Пока нет такого опыта (извлечения данных во время перезаливки), но думаю, что увижу нечто неудобоваримое.
В штатном режиме (INSERT.. + SELECT.. + хватает ресурсов) - никак
ну используйте rename table это будет гарантировать, что в любой момент времени у вас полная таблица - либо несколько устаревшая пока идет инсерт в буферную (почему вы ее так называете?), либо просто актуальная
Не понимаю Вас. TRUNCATE TABLE + заливка данных пачками в течении нескольких часов - что будет видеть во время заливки пользователь? ((( то есть rename table - оптимально?
вам надо создать базу Engine=Atomic, таблицы создавать в ней и свапать EXCHANGE TABLES atom.X1 AND atom.X2; rename не используйте, он непрозрачен для пользователей
rename не прозрачен только тем, что при наличии идущих селектов будет ждать? или что-то ещё есть?
они увидят несуществующую таблицу при select
Обсуждают сегодня