This commit is contained in:
Nikita Vasilev 2019-01-22 21:22:16 +03:00
parent 5ed3269324
commit 71e61d8299
4 changed files with 11 additions and 11 deletions

View File

@ -255,7 +255,7 @@ CREATE TABLE table_name
... ...
``` ```
Indices from the example can be used by ClickHouse to reduce amount of data read from disk in following queries. Indices from the example can be used by ClickHouse to reduce amount of data to read from disk in following queries.
```sql ```sql
SELECT count() FROM table WHERE s < 'z' SELECT count() FROM table WHERE s < 'z'
SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234 SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234
@ -266,7 +266,7 @@ SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234
* `minmax` Stores extremes of specified expression (if expression is `tuple`, then it stores extremes for each element of `tuple`), uses stored info for skipping blocks of data like primary key. * `minmax` Stores extremes of specified expression (if expression is `tuple`, then it stores extremes for each element of `tuple`), uses stored info for skipping blocks of data like primary key.
```sql ```sql
INDEX b (u64 * length(s)) TYPE minmax GRANULARITY 4 INDEX sample_index (u64 * length(s)) TYPE minmax GRANULARITY 4
``` ```

View File

@ -85,16 +85,16 @@ to the sorting key (only columns added by the `ADD COLUMN` command in the same `
### Manipulations With Data Skipping Indices ### Manipulations With Data Skipping Indices
It only works for tables in the [`MergeTree`](../operations/table_engines/mergetree.md) family (including It only works for tables in the [`*MergeTree`](../operations/table_engines/mergetree.md) family (including
[replicated](../operations/table_engines/replication.md) tables). The following operations [replicated](../operations/table_engines/replication.md) tables). The following operations
are available: are available:
* `ALTER ADD INDEX name expression TYPE type GRANULARITY value AFTER name [AFTER name2]` - Adds index description to tables metadata. * `ALTER ADD INDEX name expression TYPE type GRANULARITY value AFTER name [AFTER name2]` - Adds index description to tables metadata.
* `ALTER DROP INDEX name` - Removes index description from tables metadata and index files from disk. * `ALTER DROP INDEX name` - Removes index description from tables metadata and deletes index files from disk.
These commands are lightweight in sense that they only change metadata or remove files. These commands are lightweight in sense that they only change metadata or remove files.
Also these operations are replicated. Also they are replicated (syncing indices metadata through ZooKeeper).
### Manipulations With Partitions and Parts ### Manipulations With Partitions and Parts

View File

@ -230,7 +230,7 @@ SELECT count() FROM table WHERE CounterID = 34 OR URL LIKE '%upyachka%'
Для таблиц семейства `*MergeTree` можно задать дополнительные индексы в секции столбцов. Для таблиц семейства `*MergeTree` можно задать дополнительные индексы в секции столбцов.
Индекс аггрегирует для заданного выражения некоторые данные, а потом при `SELECT` запросе использует их после первичного ключа для пропуска боков данных (пропускаемый блок состоих из гранул данных в количестве равном гранулярности данного индекса), на которых секция `WHERE` не может быть выполнена, тем самым уменьшая объем данных читаемых с диска. Индексы аггрегируют для заданного выражения некоторые данные, а потом при `SELECT` запросе используют для пропуска боков данных (пропускаемый блок состоих из гранул данных в количестве равном гранулярности данного индекса), на которых секция `WHERE` не может быть выполнена, тем самым уменьшая объем данных читаемых с диска.
Пример Пример
```sql ```sql
@ -246,7 +246,7 @@ CREATE TABLE table_name
... ...
``` ```
Эти индексы смогут использоваться для оптимизации запросов Эти индексы смогут использоваться для оптимизации следующих запросов
```sql ```sql
SELECT count() FROM table WHERE s < 'z' SELECT count() FROM table WHERE s < 'z'
SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234 SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234
@ -254,11 +254,11 @@ SELECT count() FROM table WHERE u64 * i32 == 10 AND u64 * length(s) >= 1234
#### Доступные индексы #### Доступные индексы
* `minmax` Хранит минимум и максимум выражения (если выражение - `tuple`, то для каждого элемента `tuple`), используя их пропуска кусков аналогично первичному ключу. * `minmax` Хранит минимум и максимум выражения (если выражение - `tuple`, то для каждого элемента `tuple`), используя их для пропуска кусков аналогично первичному ключу.
Пример Пример
```sql ```sql
INDEX b (u64 * length(s)) TYPE minmax GRANULARITY 4 INDEX b (u64 * length(str), i32 + f64 * 100, date, str) TYPE minmax GRANULARITY 4
``` ```
## Конкурентный доступ к данным ## Конкурентный доступ к данным

View File

@ -88,9 +88,9 @@ ALTER DROP INDEX name
``` ```
Поддерживается только таблицами семейства `*MergeTree`. Поддерживается только таблицами семейства `*MergeTree`.
Команда `ALTER ADD INDEX` добавляет описание индексов в метаданные, а `ALTER DROP INDEX` удаляет индекс из метаданных и стирает файлы индекса с диска, поэтому работают они мгновенно. Команда `ALTER ADD INDEX` добавляет описание индексов в метаданные, а `ALTER DROP INDEX` удаляет индекс из метаданных и стирает файлы индекса с диска, поэтому они легковесные и работают мгновенно.
Если индекс есть в метаданных, то он начнет считаться в последующих слияниях и записях в таблицу, а не сразу после выполнения операции `ALTER`. Если индекс появился в метаданных, то он начнет считаться в последующих слияниях и записях в таблицу, а не сразу после выполнения операции `ALTER`.
Запрос на изменение индексов реплицируется, сохраняя новые метаданные в ZooKeeper и применяя изменения на всех репликах. Запрос на изменение индексов реплицируется, сохраняя новые метаданные в ZooKeeper и применяя изменения на всех репликах.