Skip to content
Snippets Groups Projects
Commit bf98652c authored by Alexander Tolstoy's avatar Alexander Tolstoy Committed by Alexander Tolstoy
Browse files

reword motion local and local-segment policies description

parent e75b7db8
No related branches found
No related tags found
1 merge request!145feat: describe delete, local motion policy
......@@ -823,22 +823,25 @@ pico.sql([[
### Варианты перемещения данных
В плане запроса может быть указан параметр `motion`, который отражает
тип перемещения данных между узлами хранения в том случае, когда такое
перемещение происходит. Существуют следующие четыре типа:
1. **Локальная вставка**. На узле хранения будет
локально создана виртуальная таблица из результатов читающего запроса
или из переданных `VALUES`, а потом данные из нее будут вставлены
локально в целевую таблицу. Планировщик отобразит значение `motion
[policy: local segment]`.
вариант перемещения данных между узлами хранения. Существуют следующие
четыре варианта:
1. **Локальная вставка**. Представляет собой локальную материализацию
данных с подсчетом значений `bucket_id` для каждого кортежа
(соответственно, кортежи будут сгруппированы по этим бакетам).
На узле хранения будет локально создана виртуальная таблица из
результатов читающего запроса или из переданных `VALUES`, а потом
данные из нее будут вставлены локально в целевую таблицу. Планировщик
отобразит значение `motion [policy: local segment]`.
1. **Локальный вариант**. Данный вариант аналогичен предыдущему с той
разницей, что при материализации данных не происходит их перемещения
на другие узлы хранения через узел-маршрутизатор и не происходит
вычисление `bucket_id`. При таком запросе планировщик отобразит
значение `motion [policy: local]`.
1. **Частичное перемещение**. При выполнении запроса на каждый узел
кластера будет отправлена только востребованная часть данных (таблица
перераспределяется по новому ключу). При таком запросе планировщик
отобразит значение `motion [policy: segment]`.
1. **Локальное перемещение**. Данный тип аналогичен предыдущему с той
разницей, что при локальном перемещении не происходит вычисление
`bucket_id`. При таком запросе планировщик отобразит значение `motion
[policy: local]`.
1. **Полное перемещение**. На каждый узел кластера будет отправлена вся
таблица. Планировщик отобразит значение `motion [policy: full]`.
......@@ -882,6 +885,30 @@ pico.sql([[explain insert into "assets" values (1, 'Woody', 2561)]], {})
...
```
**Локальный вариант** относится к тем случаям, когда требуется положить
в память прочитанные данные из локального запроса для их дальнейшей
обработки. Перемещения данных нет и вычисление `bucket_id` не требуется
(см. [подробнее](review.md#data)). Примером может служить удаление
данных из спейса:
```
picodata> pico.sql([[explain delete from "characters" where "id" = 1]], {})
```
Вывод в консоль:
```
---
- - delete "characters"
- ' motion [policy: local]'
- ' projection ("characters"."id"::integer -> pk_col_0)'
- ' selection ROW("characters"."id"::integer) = ROW(1::unsigned)'
- ' scan "characters"'
...
```
<!--
вставить пример с update, когда он появится
-->
**Частичное перемещение** происходит, когда требуется отправить на узлы
хранения недостающую часть таблицы.
......@@ -935,31 +962,6 @@ pico.sql([[
...
```
**Локальное перемещение** происходит в тех случаях, когда изменение
данных не означает их перераспределение между узлами хранения, т.е.
вычисление `bucket_id` не требуется (см. [подробнее](review.md#data)).
Примером может служить удаление данных из спейса:
```
picodata> pico.sql([[explain delete from "characters" where "id" = 1]], {})
```
Вывод в консоль:
```
---
- - delete "characters"
- ' motion [policy: local]'
- ' projection ("characters"."id"::integer -> pk_col_0)'
- ' selection ROW("characters"."id"::integer) = ROW(1::unsigned)'
- ' scan "characters"'
- 'execution options:'
- sql_vdbe_max_steps = 45000
- vtable_max_rows = 5000
...
```
<!--
вставить пример с update, когда он появится
-->
**Полное перемещение** происходит, когда требуется скопировать всю
внутреннюю таблицу (в правой части запроса) на все узлы, содержащие
внешнюю таблицу (в левой части).
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment