diff options
author | asmyasnikov <asmyasnikov@ydb.tech> | 2023-03-03 10:39:00 +0300 |
---|---|---|
committer | asmyasnikov <asmyasnikov@ydb.tech> | 2023-03-03 10:39:00 +0300 |
commit | 6c4279de8b9fcd286ed33e03d89c857dad6e6272 (patch) | |
tree | 1cf22d2d1cc5f42a38b529eb4be4877d951affb9 | |
parent | 5f92e28da94623bf77457128d29720bb545aceae (diff) | |
download | ydb-6c4279de8b9fcd286ed33e03d89c857dad6e6272.tar.gz |
added tx-control.md
added tx-control.md
7 files changed, 388 insertions, 0 deletions
diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/index.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/index.md index 7c50af6ec57..67403a5ce27 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/index.md +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/index.md @@ -27,6 +27,11 @@ description: "В данном разделе содержатся рецепты - [Установить размер пула сессий](session-pool-limit.md) - [Вставка данных](upsert.md) - [Пакетная вставка данных](bulk-upsert.md) +<!-- - [Установка режима выполнения транзакции](tx-control.md) + - [SerializableReadWrite](tx-control-serializable-read-write.md) + - [OnlineReadOnly](tx-control-online-read-only.md) + - [StaleReadOnly](tx-control-stale-read-only.md) + - [SnapshotReadOnly](tx-control-snapshot-read-only.md) --> - [Диагностика проблем](debug.md) - [Включить логирование](debug-logs.md) - [Подключить метрики в Prometheus](debug-prometheus.md) diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/toc_i.yaml b/ydb/docs/ru/core/reference/ydb-sdk/recipes/toc_i.yaml index 0f6618d9910..8edb7689e79 100644 --- a/ydb/docs/ru/core/reference/ydb-sdk/recipes/toc_i.yaml +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/toc_i.yaml @@ -37,6 +37,19 @@ items: href: upsert.md - name: Пакетная вставка данных href: bulk-upsert.md +- name: Установка режима выполнения транзакции + hidden: true + items: + - name: Обзор + href: tx-control.md + - name: SerializableReadWrite + href: tx-control-serializable-read-write.md + - name: OnlineReadOnly + href: tx-control-online-read-only.md + - name: StaleReadOnly + href: tx-control-stale-read-only.md + - name: SnapshotReadOnly + href: tx-control-snapshot-read-only.md - name: Диагностика проблем items: - name: Обзор diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-online-read-only.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-online-read-only.md new file mode 100644 index 00000000000..f05dc0e3ecb --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-online-read-only.md @@ -0,0 +1,44 @@ +# OnlineReadOnly + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithOnlineReadOnly(table.WithInconsistentReads())), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-serializable-read-write.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-serializable-read-write.md new file mode 100644 index 00000000000..3c3f2ab4d3f --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-serializable-read-write.md @@ -0,0 +1,44 @@ +# SerializableReadWrite + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithSerializableReadWrite()), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-snapshot-read-only.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-snapshot-read-only.md new file mode 100644 index 00000000000..f40ee562b24 --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-snapshot-read-only.md @@ -0,0 +1,44 @@ +# SnapshotReadOnly + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithSnapshotReadOnly()), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-stale-read-only.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-stale-read-only.md new file mode 100644 index 00000000000..07d9d90af3b --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control-stale-read-only.md @@ -0,0 +1,44 @@ +# StaleReadOnly + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithStaleReadOnly()), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} diff --git a/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control.md b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control.md new file mode 100644 index 00000000000..45c0b5b413e --- /dev/null +++ b/ydb/docs/ru/core/reference/ydb-sdk/recipes/tx-control.md @@ -0,0 +1,194 @@ +--- +title: "Обзор рецепта кода по установке режима выполнения транзакции в {{ ydb-short-name }}" +description: "В статье вы ознакомитесь как в разных SDK установить режим выполнения транзакции для выполнения запросов к {{ ydb-short-name }} ." +--- + +# Установка режима выполнения транзакции + +{% include [work in progress message](_includes/addition.md) %} + +В SDK для выполнения запросов к {{ ydb-short-name }} необходимо всегда указывать режим выполнения транзакции. + +<[Тут умные слова или отсылка к разделу документации о том, какие режимы выполнения транзакций поддерживаются в YDB.]> + +Ниже приведены примеры кода использования встроенных в {{ ydb-short-name }} SDK средств создания объекта режим выполнения транзакции: + +## SerializableReadWrite + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithSerializableReadWrite()), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} + +## OnlineReadOnly + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithOnlineReadOnly(table.WithInconsistentReads())), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} + +## StaleReadOnly + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithStaleReadOnly()), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} + +## SnapshotReadOnly + +{% list tabs %} + +- Go (native) + + ```go + package main + + import ( + "context" + "os" + + "github.com/ydb-platform/ydb-go-sdk/v3" + "github.com/ydb-platform/ydb-go-sdk/v3/table" + ) + + func main() { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + db, err := ydb.Open(ctx, + os.Getenv("YDB_CONNECTION_STRING"), + ydb.WithAccessTokenCredentials(os.Getenv("YDB_TOKEN")), + ) + if err != nil { + panic(err) + } + defer db.Close(ctx) + txControl := table.TxControl( + table.BeginTx(table.WithSnapshotReadOnly()), + table.CommitTx(), + ) + err := driver.Table().Do(scope.Ctx, func(ctx context.Context, s table.Session) error { + _, _, err := s.Execute(ctx, txControl, "SELECT 1", nil) + return err + }) + if err != nil { + fmt.Printf("unexpected error: %v", err) + } + } + ``` + + +{% endlist %} |