Управление таблицами
В Managed ClickHouse управлять таблицами можно с помощью SQL-запросов. С полным списком SQL-операторов ClickHouse вы можете ознакомиться в официальной документации ClickHouse.
Получить список таблиц в базе данных
Заголовок раздела «Получить список таблиц в базе данных»Запросите список таблиц из системной таблицы system.tables, которая содержит метаданные обо всех таблицах. Для этого используйте оператор SELECT и виртуальный движок clusterAllReplicas, который выполняет запрос к указанной таблице на всех узлах всех шардов заданного кластера.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Выполните запрос:
sql SELECT name AS таблицаFROM system.tablesWHERE database = '<имя базы данных>'ORDER BY таблица;
В результате будет выведен список таблиц, которые содержатся в указанной базе данных.
Получить информацию о конкретной таблице
Заголовок раздела «Получить информацию о конкретной таблице»Запросите данные о таблице из системной таблицы system.tables по ее имени. Для этого используйте оператор SELECT.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SELECT name AS таблицаFROM system.tablesWHERE database = '<имя базы данных>'ORDER BY таблица;Выполните запрос:
sql SELECT *FROM system.tablesWHERE database = '<имя базы данных>'AND name = '<имя таблицы>';
В результате будут выведены метаданные и технические параметры таблицы.
Создать таблицу
Заголовок раздела «Создать таблицу»Для создания таблицы используйте оператор CREATE.
Для создания таблицы необходимо указать движок таблиц. В зависимости от движка передаваемые в запросе параметры меняются.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Выполните запрос:
sql CREATE TABLE [IF NOT EXISTS] <имя базы данных>.<имя таблицы>(<имя столбца 1> <тип столбца 1> [COMMENT '<комментарий>'],<имя столбца 2> <тип столбца 2>,...)ENGINE = <движок>ORDER BY <столбец сортировки>[COMMENT '<комментарий к таблице>'][SETTINGS storage_policy = 'default']; -- если используется гибридное хранилищеУсловия в запросе:
IF NOT EXISTS— предотвращает ошибку, если таблица с таким именем уже существует.ENGINE— задает тип движка.ORDER BY— определяет столбец сортировки. Обязателен для движков семействаMergeTree.COMMENT— комментарий.
Пример запроса:
sql CREATE TABLE IF NOT EXISTS my_database.my_table(id UInt64 COMMENT 'Уникальный идентификатор',name String,created_at DateTime)ENGINE = MergeTreeORDER BY idCOMMENT 'Таблица событий пользователей'SETTINGS storage_policy = 'default';
В ClickHouse доступны другие способы создания таблиц. Вы можете ознакомиться с ними в официальной документации ClickHouse.
Просмотреть структуру таблицы
Заголовок раздела «Просмотреть структуру таблицы»Для просмотра используйте оператор DESCRIBE.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql DESCRIBE TABLE <имя базы данных>.<имя таблицы>;
В результате будет выведен список столбцов таблицы с их типами.
Просмотреть все столбцы таблицы
Заголовок раздела «Просмотреть все столбцы таблицы»Для просмотра используйте оператор SELECT.
Запросите данные о столбцах из системной таблицы system.columns по именам базы данных и таблицы.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql SELECT name, type, default_expressionFROM system.columnsWHERE database = '<имя базы данных>' AND table = '<имя таблицы>';
В результате будет выведена подробная информация о столбцах таблицы: имя, тип и значение по умолчанию.
Просмотреть первые строки таблицы
Заголовок раздела «Просмотреть первые строки таблицы»Для просмотра используйте оператор SELECT.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Узнайте структуру таблицы:
sql DESCRIBE TABLE <имя базы данных>.<имя таблицы>;Выполните запрос:
sql SELECT <столбец 1>, <столбец 2>, ... FROM <имя базы данных>.<имя таблицы> LIMIT <число строк>;Здесь условие
LIMITвозвращает не более заданного количества найденных записей из таблицы.Если нужно вывести данные из всех столбцов, используйте в запросе символ
*вместо перечисления их имен.Пример запроса:
sql SELECT id, name, created_at FROM my_database.my_table LIMIT 7;
Просмотреть, как создавалась таблица
Заголовок раздела «Просмотреть, как создавалась таблица»Для операции просмотра используйте оператор SHOW.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql SHOW CREATE TABLE <имя базы данных>.<имя таблицы>;
В результате будет выведен полный SQL-запрос, которым была создана таблица.
Установить политику хранения default
Заголовок раздела «Установить политику хранения default»Операция изменяет политику хранения существующей таблицы на default для использования гибридного хранилища. Чтобы изменить политику, используйте оператор ALTER TABLE … MODIFY SETTING.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql ALTER TABLE <имя базы данных>.<имя таблицы>MODIFY SETTING storage_policy = 'default';В запросе:
MODIFY SETTINGизменяет настройки таблицы.storage_policy = 'default'устанавливает политику хранения для гибридного хранилища.
В результате политика будет изменена для новых вставок.
Добавить или изменить правило TTL
Заголовок раздела «Добавить или изменить правило TTL»Чтобы изменить правило автоматического переноса данных по времени, используйте оператор ALTER TABLE … MODIFY TTL. Новое правило будет применяться к существующим и новым частям данных.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql ALTER TABLE <имя базы данных>.<имя таблицы>MODIFY TTL <выражение_времени> TO VOLUME 'cold';Пример запроса:
sql ALTER TABLE school.eventsMODIFY TTL event_time + INTERVAL 90 DAY TO VOLUME 'cold';В запросе и примере:
MODIFY TTL— изменяет настройки TTL.event_time + INTERVAL 90 DAY— условие времени, через которое данные станут холодными.TO VOLUME 'cold'— указывает, что данные должны быть перемещены в томcold.
Удалить правило TTL
Заголовок раздела «Удалить правило TTL»Чтобы удалить правило TTL, используйте оператор ALTER TABLE … REMOVE TTL. Части, уже перемещенные в холодное хранилище, не вернутся обратно автоматически. Их можно будет переместить только вручную.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql ALTER TABLE <имя базы данных>.<имя таблицы> REMOVE TTL;
Принудительно применить правило TTL
Заголовок раздела «Принудительно применить правило TTL»По умолчанию TTL обрабатывается в фоновом режиме. Чтобы запустить немедленную обработку TTL для всех существующих данных, используйте оператор ALTER TABLE ... MATERIALIZE TTL.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql ALTER TABLE <имя базы данных>.<имя таблицы> MATERIALIZE TTL;
Переместить данные вручную
Заголовок раздела «Переместить данные вручную»Разовые команды MOVE PARTITION и MOVE PART позволяют переместить партицию или отдельную часть между томами hot и cold. Они не создают автоматического правила для будущих данных.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос.
Чтобы переместить партицию из горячего в холодное хранилище:
sql ALTER TABLE <имя базы данных>.<имя таблицы>MOVE PARTITION <партиция> TO VOLUME 'cold';Чтобы переместить партицию из холодного в горячее хранилище:
sql ALTER TABLE <имя базы данных>.<имя таблицы>MOVE PARTITION <партиция> TO VOLUME 'hot';Чтобы переместить конкретную часть из горячего в холодное хранилище:
sql ALTER TABLE <имя базы данных>.<имя таблицы>MOVE PART '<имя_части>' TO VOLUME 'cold';Чтобы переместить конкретную часть из холодного в горячее хранилище:
sql ALTER TABLE <имя базы данных>.<имя таблицы>MOVE PART '<имя_части>' TO VOLUME 'hot';
В результате указанная партиция или часть будет немедленно перемещена в целевой том.
Проверить размещение данных
Заголовок раздела «Проверить размещение данных»Чтобы убедиться, что данные распределены между горячим и холодным хранилищем, используйте системные таблицы system.tables, system.parts, system.disks и system.storage_policies.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос.
Чтобы посмотреть политику хранения таблицы:
sql SELECT database, table, storage_policyFROM system.tablesWHERE database = '<имя базы данных>' AND table = '<имя таблицы>';Чтобы посмотреть, на каких дисках лежат части:
sql SELECT partition, name, disk_name, formatReadableSize(bytes_on_disk) AS sizeFROM system.partsWHERE database = '<имя базы данных>' AND table = '<имя таблицы>' AND activeORDER BY partition, name;Чтобы получить все доступные диски и их типы:
sql SELECT name, type, path, formatReadableSize(free_space) AS free_spaceFROM system.disks;Чтобы получить информацию о политиках хранения:
sql SELECT policy_name, volume_name, disks, move_factorFROM system.storage_policies;
Удалить таблицу
Заголовок раздела «Удалить таблицу»Для удаления таблицы используйте оператор DROP.
- В standalone-кластере
- В multi-node-кластере
Подключитесь к кластеру.
Узнайте имя базы данных:
sql SELECT name AS база_данныхFROM system.databases;Узнайте имя таблицы:
sql SHOW TABLES FROM <имя базы данных>;Выполните запрос:
sql DROP TABLE [IF EXISTS] <имя базы данных>.<имя таблицы>;В запросе условие
IF EXISTSпредотвращает ошибку, если таблица с таким именем не существует в указанной базе данных.В результате таблица удалится вместе со всеми данными.