Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions control-execution-plan.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
---
title: Control Execution Plan
summary: この章では、TiDB における実行計画の生成を制御する方法について説明します。これには、ヒントの使用、SQL プラン管理、および最適化ルールのブロックリストが含まれます。さらに、システム変数と tidb_opt_fix_control` 変数を変更することで、実行計画を制御できます。これらの方法は、クラスタのアップグレード後にオプティマイザの動作が変更されることによって発生するパフォーマンスの低下を防ぐのに役立ちます。
summary: この章では、TiDB における実行計画の生成を制御する方法について説明します。これには、ヒントの使用、SQL プラン管理、および最適化ルールのブロックリストが含まれます。さらに、システム変数と `tidb_opt_fix_control` 変数を変更することで、実行計画を制御できます。これらの方法は、クラスタのアップグレード後にオプティマイザの動作が変更されることによって発生するパフォーマンスの低下を防ぐのに役立ちます。
---

# コントロール実行計画 {#control-execution-plan}

SQLチューニングの最初の2章では、TiDBの実行計画の理解方法と、TiDBが実行計画を生成する方法について解説します。本章では、実行計画の問題点を特定した際に、実行計画の生成を制御するために使用できる方法について説明します。本章の主な内容は以下の3点です。

- [オプティマイザのヒント](/optimizer-hints.md)では、TiDB が実行計画を生成するようにヒントを使用する方法を学びます。
- しかし、ヒントはSQL文を侵襲的に変更します。場合によっては、ヒントを単純に挿入することはできません。SQL [SQLプラン管理](/sql-plan-management.md)では、TiDBが別の構文を使用して実行計画の生成を非侵襲的に制御する方法と、バックグラウンドで実行計画を自動的に進化させる方法について説明しています。この方法は、バージョンアップグレードやクラスタのパフォーマンス低下によって引き起こされる実行計画の不安定性などの問題に対処するのに役立ちます。
- しかし、ヒントはSQL文を侵襲的に変更します。場合によっては、ヒントを単純に挿入することはできません。[SQLプラン管理](/sql-plan-management.md)では、TiDBが別の構文を使用して実行計画の生成を非侵襲的に制御する方法と、バックグラウンドで実行計画を自動的に進化させる方法について説明しています。この方法は、バージョンアップグレードやクラスタのパフォーマンス低下によって引き起こされる実行計画の不安定性などの問題に対処するのに役立ちます。
- 最後に、[最適化ルールと式のプッシュダウンのブロックリスト](/blocklist-control-plan.md)でブロックリストの使用方法を学びます。

上記の方法に加えて、実行計画はいくつかのシステム変数にも影響されます。システムレベルまたはセッションレベルでこれらの変数を変更することで、実行計画の生成を制御できます。v6.5.3およびv7.1.0以降、TiDBは比較的特殊な変数[`tidb_opt_fix_control`](/system-variables.md#tidb_opt_fix_control-new-in-v653-and-v710)を導入しました。この変数は複数の制御項目を受け入れることができ、クラスタのアップグレード後にオプティマイザの動作変更によって発生するパフォーマンスの低下を防ぐために、オプティマイザの動作をよりきめ細かく制御できます。詳細については[オプティマイザー修正コントロール](/optimizer-fix-controls.md)を参照してください。
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-nodejs-mysql2.md
Original file line number Diff line number Diff line change
Expand Up @@ -337,7 +337,7 @@ console.log(rsh.affectedRows);
## 次のステップ {#next-steps}

- node-mysql2 ドライバーの使用方法の詳細については[node-mysql2 のドキュメント](https://github.com/sidorares/node-mysql2#readme)を参照してください。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、 [クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、SQL [トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、[トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- プロフェッショナルな[TiDB開発者向けコース](https://www.pingcap.com/education/)コースを通じて学習し、試験に合格すると[TiDB認定資格](https://www.pingcap.com/education/certification/)を取得します。

## お困りですか? {#need-help}
Expand Down
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-nodejs-mysqljs.md
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ conn.query('DELETE FROM players WHERE id = ?;', [1], (err, ok) => {
## 次のステップ {#next-steps}

- mysql.js ドライバーの使用方法の詳細については[mysql.jsのドキュメント](https://github.com/mysqljs/mysql#readme)を参照してください。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、 [クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、SQL [トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、[トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- プロフェッショナルな[TiDB開発者向けコース](https://www.pingcap.com/education/)コースを通じて学習し、試験に合格すると[TiDB認定資格](https://www.pingcap.com/education/certification/)を取得します。

## お困りですか? {#need-help}
Expand Down
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-nodejs-prisma.md
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ await prisma.player.delete({
## 次のステップ {#next-steps}

- ORM フレームワーク Prisma ドライバーの使用方法の詳細については[Prismaのドキュメント](https://www.prisma.io/docs)を参照してください。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、 [クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、SQL [トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、[トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- プロフェッショナルな[TiDB開発者向けコース](https://www.pingcap.com/education/)コースを通じて学習し、試験に合格すると[TiDB認定資格](https://www.pingcap.com/education/certification/)を取得します。

## お困りですか? {#need-help}
Expand Down
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-nodejs-typeorm.md
Original file line number Diff line number Diff line change
Expand Up @@ -396,7 +396,7 @@ export class ActionLog {
## 次のステップ {#next-steps}

- TypeORM の使用法の詳細については[TypeORMのドキュメント](https://typeorm.io/)を参照してください。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、 [クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、SQL [トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)、[データを削除する](/develop/dev-guide-delete-data.md)、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、[トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- プロフェッショナルな[TiDB開発者向けコース](https://www.pingcap.com/education/)コースを通じて学習し、試験に合格すると[TiDB認定資格](https://www.pingcap.com/education/certification/)を取得します。

## お困りですか? {#need-help}
Expand Down
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-ruby-mysql2.md
Original file line number Diff line number Diff line change
Expand Up @@ -338,7 +338,7 @@ CA証明書のパスを手動で指定することも可能ですが、異なる
## 次のステップ {#next-steps}

- mysql2 ドライバーの使用方法の詳細については[mysql2のドキュメント](https://github.com/brianmario/mysql2#readme)を参照してください。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)[データを削除する](/develop/dev-guide-delete-data.md)SQL [トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読ん[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)[データを削除する](/develop/dev-guide-delete-data.md)、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、[トランザクション](/develop/dev-guide-transaction-overview.md)、[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- プロフェッショナルな[TiDB開発者向けコース](https://www.pingcap.com/education/)コースを通じて学習し、試験に合格すると[TiDB認定資格](https://www.pingcap.com/education/certification/)を取得します。

## お困りですか? {#need-help}
Expand Down
2 changes: 1 addition & 1 deletion develop/dev-guide-sample-application-ruby-rails.md
Original file line number Diff line number Diff line change
Expand Up @@ -307,7 +307,7 @@ CA証明書のパスを手動で指定することも可能ですが、異なる
## 次のステップ {#next-steps}

- ActiveRecord ORM の使用法について詳しくは[ActiveRecordのドキュメント](https://guides.rubyonrails.org/active_record_basics.html)ご覧ください。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)[データを削除する](/develop/dev-guide-delete-data.md)SQL [トランザクション](/develop/dev-guide-transaction-overview.md)[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- [開発者ガイド](https://docs.pingcap.com/developer/)[データを挿入する](/develop/dev-guide-insert-data.md)、[データの更新](/develop/dev-guide-update-data.md)[データを削除する](/develop/dev-guide-delete-data.md)、[クエリデータ](/develop/dev-guide-get-data-from-single-table.md)、[トランザクション](/develop/dev-guide-transaction-overview.md)、[SQLパフォーマンス最適化](/develop/dev-guide-optimize-sql-overview.md)などの章を読んで、TiDB アプリケーション開発のベストプラクティスを学びましょう。
- プロフェッショナルな[TiDB開発者向けコース](https://www.pingcap.com/education/)コースを通じて学習し、試験に合格すると[TiDB認定資格](https://www.pingcap.com/education/certification/)を取得します。

## お困りですか? {#need-help}
Expand Down
Loading