Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
D
docs
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
core
docs
Commits
bf98652c
Commit
bf98652c
authored
1 year ago
by
Alexander Tolstoy
Committed by
Alexander Tolstoy
1 year ago
Browse files
Options
Downloads
Patches
Plain Diff
reword motion local and local-segment policies description
parent
e75b7db8
No related branches found
Branches containing commit
No related tags found
Tags containing commit
1 merge request
!145
feat: describe delete, local motion policy
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/sql/queries.md
+39
-37
39 additions, 37 deletions
docs/sql/queries.md
with
39 additions
and
37 deletions
docs/sql/queries.md
+
39
−
37
View file @
bf98652c
...
...
@@ -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, когда он появится
-->
**Полное перемещение** происходит, когда требуется скопировать всю
внутреннюю таблицу (в правой части запроса) на все узлы, содержащие
внешнюю таблицу (в левой части).
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment