- TiDBについて
- クイックスタート
- 発展させる
- 概要
- クイックスタート
- TiDB Cloud(開発者層) で TiDB クラスターを構築する
- TiDB の CRUD SQL
- TiDB でシンプルな CRUD アプリを構築する
- 応用例
- TiDB に接続する
- データベース スキーマの設計
- 書き込みデータ
- データの読み取り
- 取引
- 最適化
- トラブルシューティング
- 参照
- 書店のサンプル アプリケーション
- ガイドライン
- アーカイブされたドキュメント
- クラウドネイティブ開発環境
- サードパーティのサポート
- デプロイ
- 移行する
- 管理
- 監視と警告
- トラブルシューティング
- TiDB トラブルシューティング マップ
- 遅いクエリを特定する
- 遅いクエリを分析する
- SQL 診断
- Top SQLを使用して高価なクエリを特定する
- ログを使用して高価なクエリを特定する
- ステートメント要約表
- ホットスポットの問題のトラブルシューティング
- 増加した読み取りおよび書き込み遅延のトラブルシューティング
- クラスターのオンサイト情報の保存と復元
- クラスタ セットアップのトラブルシューティング
- 高いディスク I/O 使用率のトラブルシューティング
- ロック競合のトラブルシューティング
- TiFlash のトラブルシューティング
- オプティミスティック トランザクションでの書き込み競合のトラブルシューティング
- データとインデックス間の不一致のトラブルシューティング
- 性能チューニング
- チューニングガイド
- Configuration / コンフィグレーションのチューニング
- システムのチューニング
- ソフトウェアのチューニング
- Configuration / コンフィグレーション
- コプロセッサ キャッシュ
- SQL チューニング
- チュートリアル
- TiDB ツール
- 概要
- ユースケース
- ダウンロード
- TiUP
- ドキュメンテーション マップ
- 概要
- 用語と概念
- TiUP コンポーネントの管理
- FAQ
- トラブルシューティングガイド
- コマンドリファレンス
- 概要
- TiUP コマンド
- TiUP クラスタ コマンド
- 概要
- tiup cluster audit
- tiup cluster check
- tiup cluster clean
- tiup cluster deploy
- tiup cluster destroy
- tiup cluster disable
- tiup cluster display
- tiup cluster edit-config
- tiup cluster enable
- tiup cluster help
- tiup cluster import
- tiup cluster list
- tiup cluster patch
- tiup cluster prune
- tiup cluster reload
- tiup cluster rename
- tiup cluster replay
- tiup cluster restart
- tiup cluster scale-in
- tiup cluster scale-out
- tiup cluster start
- tiup cluster stop
- tiup cluster template
- tiup cluster upgrade
- TiUP DMコマンド
- TiDB クラスター トポロジ リファレンス
- DM クラスタ トポロジ リファレンス
- ミラー リファレンス ガイド
- TiUP コンポーネント
- PingCAPクリニック診断サービス
- TiDB Operator
- Dumpling
- TiDB Lightning
- TiDB データ移行
- バックアップと復元 (BR)
- Binlog
- TiCDC
- Dumpling
- 同期差分インスペクター
- ティスパーク
- 参照
- クラスタ アーキテクチャ
- 主な監視指標
- セキュリティ
- 権限
- SQL
- SQL 言語の構造と構文
- SQL ステートメント
ADD COLUMN
ADD INDEX
ADMIN
ADMIN CANCEL DDL
ADMIN CHECKSUM TABLE
ADMIN CHECK [TABLE|INDEX]
ADMIN SHOW DDL [JOBS|QUERIES]
ADMIN SHOW TELEMETRY
ALTER DATABASE
ALTER INDEX
ALTER INSTANCE
ALTER PLACEMENT POLICY
ALTER TABLE
ALTER TABLE COMPACT
ALTER USER
ANALYZE TABLE
BACKUP
BATCH
BEGIN
CHANGE COLUMN
COMMIT
CHANGE DRAINER
CHANGE PUMP
CREATE [GLOBAL|SESSION] BINDING
CREATE DATABASE
CREATE INDEX
CREATE PLACEMENT POLICY
CREATE ROLE
CREATE SEQUENCE
CREATE TABLE LIKE
CREATE TABLE
CREATE USER
CREATE VIEW
DEALLOCATE
DELETE
DESC
DESCRIBE
DO
DROP [GLOBAL|SESSION] BINDING
DROP COLUMN
DROP DATABASE
DROP INDEX
DROP PLACEMENT POLICY
DROP ROLE
DROP SEQUENCE
DROP STATS
DROP TABLE
DROP USER
DROP VIEW
EXECUTE
EXPLAIN ANALYZE
EXPLAIN
FLASHBACK TABLE
FLUSH PRIVILEGES
FLUSH STATUS
FLUSH TABLES
GRANT <privileges>
GRANT <role>
INSERT
KILL [TIDB]
LOAD DATA
LOAD STATS
MODIFY COLUMN
PREPARE
RECOVER TABLE
RENAME INDEX
RENAME TABLE
REPLACE
RESTORE
REVOKE <privileges>
REVOKE <role>
ROLLBACK
SELECT
SET DEFAULT ROLE
SET [NAMES|CHARACTER SET]
SET PASSWORD
SET ROLE
SET TRANSACTION
SET [GLOBAL|SESSION] <variable>
SHOW ANALYZE STATUS
SHOW [BACKUPS|RESTORES]
SHOW [GLOBAL|SESSION] BINDINGS
SHOW BUILTINS
SHOW CHARACTER SET
SHOW COLLATION
SHOW [FULL] COLUMNS FROM
SHOW CONFIG
SHOW CREATE PLACEMENT POLICY
SHOW CREATE SEQUENCE
SHOW CREATE TABLE
SHOW CREATE USER
SHOW DATABASES
SHOW DRAINER STATUS
SHOW ENGINES
SHOW ERRORS
SHOW [FULL] FIELDS FROM
SHOW GRANTS
SHOW INDEX [FROM|IN]
SHOW INDEXES [FROM|IN]
SHOW KEYS [FROM|IN]
SHOW MASTER STATUS
SHOW PLACEMENT
SHOW PLACEMENT FOR
SHOW PLACEMENT LABELS
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSSLIST
SHOW PROFILES
SHOW PUMP STATUS
SHOW SCHEMAS
SHOW STATS_HEALTHY
SHOW STATS_HISTOGRAMS
SHOW STATS_META
SHOW STATUS
SHOW TABLE NEXT_ROW_ID
SHOW TABLE REGIONS
SHOW TABLE STATUS
SHOW [FULL] TABLES
SHOW [GLOBAL|SESSION] VARIABLES
SHOW WARNINGS
SHUTDOWN
SPLIT REGION
START TRANSACTION
TABLE
TRACE
TRUNCATE
UPDATE
USE
WITH
- データ型
- 関数と演算子
- クラスタ化インデックス
- 制約
- 生成された列
- SQL モード
- テーブル属性
- 取引
- ガベージ コレクション (GC)
- ビュー
- パーティショニング
- 一時テーブル
- キャッシュされたテーブル
- 文字セットと照合順序
- SQL の配置規則
- システム テーブル
mysql
- 情報_スキーマ
- 概要
ANALYZE_STATUS
CLIENT_ERRORS_SUMMARY_BY_HOST
CLIENT_ERRORS_SUMMARY_BY_USER
CLIENT_ERRORS_SUMMARY_GLOBAL
CHARACTER_SETS
CLUSTER_CONFIG
CLUSTER_HARDWARE
CLUSTER_INFO
CLUSTER_LOAD
CLUSTER_LOG
CLUSTER_SYSTEMINFO
COLLATIONS
COLLATION_CHARACTER_SET_APPLICABILITY
COLUMNS
DATA_LOCK_WAITS
DDL_JOBS
DEADLOCKS
ENGINES
INSPECTION_RESULT
INSPECTION_RULES
INSPECTION_SUMMARY
KEY_COLUMN_USAGE
METRICS_SUMMARY
METRICS_TABLES
PARTITIONS
PLACEMENT_POLICIES
PROCESSLIST
REFERENTIAL_CONSTRAINTS
SCHEMATA
SEQUENCES
SESSION_VARIABLES
SLOW_QUERY
STATISTICS
TABLES
TABLE_CONSTRAINTS
TABLE_STORAGE_STATS
TIDB_HOT_REGIONS
TIDB_HOT_REGIONS_HISTORY
TIDB_INDEXES
TIDB_SERVERS_INFO
TIDB_TRX
TIFLASH_REPLICA
TIKV_REGION_PEERS
TIKV_REGION_STATUS
TIKV_STORE_STATUS
USER_PRIVILEGES
VIEWS
METRICS_SCHEMA
- UI
- TiDB ダッシュボード
- 概要
- 管理
- アクセス
- 概要ページ
- クラスター情報ページ
- Top SQLページ
- キー ビジュアライザー ページ
- メトリクス関係グラフ
- SQL ステートメントの分析
- スロークエリページ
- クラスタ診断
- 検索ログ ページ
- インスタンスのプロファイリング
- セッションの管理とConfiguration / コンフィグレーション
- FAQ
- CLI
- コマンド ライン フラグ
- Configuration / コンフィグレーションファイルのパラメーター
- システム変数
- ストレージ エンジン
- テレメトリー
- エラーコード
- テーブル フィルター
- トポロジ ラベルごとにレプリカをスケジュールする
- よくある質問
- リリースノート
- すべてのリリース
- リリースのタイムライン
- TiDB のバージョニング
- v6.1
- v6.0
- v5.4
- v5.3
- v5.2
- v5.1
- v5.0
- v4.0
- v3.1
- v3.0
- v2.1
- v2.0
- v1.0
- 用語集
TiDB5.4リリースノート
発売日:2022年2月15日
TiDBバージョン:5.4.0
v5.4では、主な新機能または改善点は次のとおりです。
- GBK文字セットをサポートする
- 複数の列のインデックスのフィルタリング結果をマージするデータへのアクセスにインデックスマージを使用することをサポートします
- セッション変数を使用した古いデータの読み取りをサポート
- 統計を収集するための構成の永続化をサポート
- TiKVのログストレージRaft EngineとしてRaftEngineの使用をサポート(実験的)
- クラスタへのバックアップの影響を最適化する
- バックアップストレージとしてのAzureBlobストレージの使用のサポート
- TiFlashとMPPエンジンの安定性とパフォーマンスを継続的に改善します
- TiDB Lightningにスイッチを追加して、データを含む既存のテーブルへのインポートを許可するかどうかを決定します
- 連続プロファイリング機能の最適化(実験的)
- TiSparkはユーザーの識別と認証をサポートします
互換性の変更
ノート:
以前のTiDBバージョンからv5.4.0にアップグレードするときに、すべての中間バージョンの互換性の変更に関する注意事項を知りたい場合は、対応するバージョンのリリースノートを確認できます。
システム変数
変数名 | タイプを変更する | 説明 |
---|---|---|
tidb_enable_column_tracking | 新しく追加されました | TiDBがPREDICATE COLUMNS を収集できるようにするかどうかを制御します。デフォルト値はOFF です。 |
tidb_enable_paging | 新しく追加されました | ページングの方法を使用して、 IndexLookUp 人のオペレーターでコプロセッサー要求を送信するかどうかを制御します。デフォルト値はOFF です。IndexLookup とLimit を使用し、 Limit をIndexScan にプッシュダウンできない読み取りクエリの場合、読み取りクエリの待機時間が長くなり、TiKVのunified read pool のCPU使用率が高くなる可能性があります。このような場合、 Limit 演算子は少数のデータセットしか必要としないため、 tidb_enable_paging をON に設定すると、TiDBが処理するデータが少なくなり、クエリの待機時間とリソース消費が削減されます。 |
tidb_enable_top_sql | 新しく追加されました | Top SQL機能を有効にするかどうかを制御します。デフォルト値はOFF です。 |
tidb_persist_analyze_options | 新しく追加されました | ANALYZE構成の永続性機能を有効にするかどうかを制御します。デフォルト値はON です。 |
tidb_read_staleness | 新しく追加されました | 現在のセッションで読み取ることができる履歴データの範囲を制御します。デフォルト値は0 です。 |
tidb_regard_null_as_point | 新しく追加されました | オプティマイザが、インデックスアクセスのプレフィックス条件としてnull等価を含むクエリ条件を使用できるかどうかを制御します。 |
tidb_stats_load_sync_wait | 新しく追加されました | 統計の同期ロード機能を有効にするかどうかを制御します。デフォルト値0 は、機能が無効になっていて、統計が非同期にロードされることを意味します。この機能が有効になっている場合、この変数は、SQL最適化がタイムアウトする前に統計の同期ロードを待機できる最大時間を制御します。 |
tidb_stats_load_pseudo_timeout | 新しく追加されました | SQLが失敗するか( OFF )、疑似統計の使用にフォールバックするか( ON )、統計の同期ロードがタイムアウトに達するタイミングを制御します。デフォルト値はOFF です。 |
tidb_backoff_lock_fast | 修正済み | デフォルト値は100 から10 に変更されます。 |
tidb_enable_index_merge | 修正済み | デフォルト値はOFF からON に変更されます。
|
tidb_store_limit | 修正済み | v5.4.0より前では、この変数はインスタンスレベルおよびグローバルに構成できました。 v5.4.0以降、この変数はグローバル構成のみをサポートします。 |
Configuration / コンフィグレーションファイルのパラメーター
Configuration / コンフィグレーションファイル | Configuration / コンフィグレーション | タイプを変更する | 説明 |
---|---|---|---|
TiDB | stats-load-concurrency | 新しく追加されました | TiDB同期ロード統計機能が同時に処理できる列の最大数を制御します。デフォルト値は5 です。 |
TiDB | stats-load-queue-size | 新しく追加されました | TiDB同期ロード統計機能がキャッシュできる列要求の最大数を制御します。デフォルト値は1000 です。 |
TiKV | snap-generator-pool-size | 新しく追加されました | snap-generator スレッドプールのサイズ。デフォルト値は2 です。 |
TiKV | log.file.max-size log.file.max-days log.file.max-backups | 新しく追加されました | 詳細については、 TiKVConfiguration / コンフィグレーションファイルlog.file を参照してください。 |
TiKV | raft-engine | 新しく追加されました | enable recovery-mode target-file-size bytes-per-sync recovery-read-block-size purge-threshold recovery-read-block-size batch-compression-threshold recovery-threads dir 詳細については、 TiKVConfiguration / コンフィグレーションファイル-raft raft-engine を参照してください。 |
TiKV | backup.enable-auto-tune | 新しく追加されました | v5.3.0では、デフォルト値はfalse です。 v5.4.0以降、デフォルト値はtrue に変更されています。このパラメーターは、クラスタリソースの使用率が高い場合にクラスタへの影響を減らすために、バックアップタスクで使用されるリソースを制限するかどうかを制御します。デフォルトの構成では、バックアップタスクの速度が遅くなる可能性があります。 |
TiKV | log-level log-format log-file log-rotation-size | 修正済み | TiKVログパラメータの名前は、 log.enable-timestamp log.level log.format 置き換えられlog.file.filename 。古いパラメータのみを設定し、それらの値がデフォルト以外の値に設定されている場合、古いパラメータは新しいパラメータとの互換性を維持します。古いパラメータと新しいパラメータの両方が設定されている場合、新しいパラメータが有効になります。詳細については、 TiKVConfiguration / コンフィグレーションファイル-ログを参照してください。 |
TiKV | log-rotation-timespan | 削除されました | ログローテーション間のタイムスパン。このタイムスパンが経過すると、ログファイルがローテーションされます。つまり、現在のログファイルのファイル名にタイムスタンプが追加され、新しいログファイルが作成されます。 |
TiKV | allow-remove-leader | 削除されました | メインスイッチの削除を許可するかどうかを決定します。 |
TiKV | raft-msg-flush-interval | 削除されました | Raftメッセージがバッチで送信される間隔を決定します。 Raftメッセージは、この構成アイテムで指定された間隔ごとにバッチで送信されます。 |
PD | log.level | 修正済み | デフォルト値は「INFO」から「info」に変更され、大文字と小文字が区別されないことが保証されています。 |
TiFlash | profile.default.enable_elastic_threadpool | 新しく追加されました | エラスティックスレッドプール機能を有効にするか無効にするかを決定します。この構成アイテムを有効にすると、同時実行性の高いシナリオでTiFlashCPU使用率を大幅に向上させることができます。デフォルト値はfalse です。 |
TiFlash | storage.format_version | 新しく追加されました | DTFileのバージョンを指定します。デフォルト値は2 で、その下にハッシュがデータファイルに埋め込まれます。値を3 に設定することもできます。 3 の場合、データファイルにはメタデータとトークンデータのチェックサムが含まれ、複数のハッシュアルゴリズムがサポートされます。 |
TiFlash | logger.count | 修正済み | デフォルト値は10 に変更されます。 |
TiFlash | status.metrics_port | 修正済み | デフォルト値は8234 に変更されます。 |
TiFlash | raftstore.apply-pool-size | 新しく追加されました | Raftデータをストレージにフラッシュするプール内のスレッドの許容数。デフォルト値は4 です。 |
TiFlash | raftstore.store-pool-size | 新しく追加されました | Raftを処理するスレッドの許容数。これはRaftstoreスレッドプールのサイズです。デフォルト値は4 です。 |
TiDBデータ移行(DM) | collation_compatible | 新しく追加されました | CREATE のSQLステートメントでデフォルトの照合順序を同期するモード。値のオプションは「loose」(デフォルト)と「strict」です。 |
TiCDC | max-message-bytes | 修正済み | Kafkaシンクのデフォルト値max-message-bytes を104857601 (10MB)に変更します |
TiCDC | partition-num | 修正済み | KafkaSinkのデフォルト値partition-num を4 から3 に変更します。これにより、TiCDCはKafakaパーティションにメッセージをより均等に送信します。 |
TiDB Lightning | meta-schema-name | 修正済み | ターゲットTiDBのメタデータのスキーマ名を指定します。 v5.4.0以降、このスキーマは並列インポートを有効にした場合にのみ作成されます(対応するパラメーターはtikv-importer.incremental-import = true です)。 |
TiDB Lightning | task-info-schema-name | 新しく追加されました | TiDB Lightningが競合を検出したときに重複データが保存されるデータベースの名前を指定します。デフォルトでは、値は「lightning_task_info」です。このパラメーターは、「重複解決」機能を有効にしている場合にのみ指定してください。 |
TiDB Lightning | incremental-import | 新しく追加されました | データがすでに存在するテーブルへのデータのインポートを許可するかどうかを決定します。デフォルト値はfalse です。 |
その他
- TiDBとPDの間にインターフェースが追加されます。
information_schema.TIDB_HOT_REGIONS_HISTORY
システムテーブルを使用する場合、TiDBは対応するバージョンのPDを使用する必要があります。 - TiDBサーバー、PDサーバー、およびTiKVサーバーは、ログに関連するパラメーターに統一された命名方法を使用して、ログ名、出力形式、およびローテーションと有効期限のルールを管理し始めます。詳細については、 TiKV構成ファイル-ログを参照してください。
- v5.4.0以降、プランキャッシュを介してキャッシュされた実行プランのSQLバインディングを作成すると、そのバインディングは、対応するクエリに対してすでにキャッシュされているプランを無効にします。新しいバインディングは、v5.4.0より前にキャッシュされた実行プランには影響しません。
- v5.3以前のバージョンでは、 TiDBデータ移行(DM)のドキュメントがTiDBドキュメントから独立しています。 v5.4以降、DMドキュメントは同じバージョンのTiDBドキュメントに統合されています。 DMドキュメントサイトにアクセスしなくても、 DMドキュメントを直接読むことができます。
- cdclogとともにポイントインタイムリカバリ(PITR)の実験的機能を削除します。 v5.4.0以降、cdclogベースのPITRおよびcdclogはサポートされなくなりました。
- システム変数を「DEFAULT」に設定する動作をMySQL互換にする#29680
- システム変数
lc_time_names
を読み取り専用#30084に設定します tidb_store_limit
のスコープをINSTANCEまたはGLOBALからGLOBAL3に設定し#30756- 列にゼロが含まれている場合、整数型の列を時間型の列に変換することを禁止します#25728
- 浮動小数点値を挿入するときに
Inf
またはNAN
の値でエラーが報告されない問題を修正します#30148 - 自動IDが範囲#30301の外にある場合、
REPLACE
ステートメントが他の行を誤って変更する問題を修正します
新機能
SQL
TiDBは、v5.4.0以降のGBK文字セットをサポートしています。
v5.4.0より前のバージョンでは、
binary
はascii
、およびutf8
文字セットをサポートしてlatin1
utf8mb4
。中国語ユーザーをより適切にサポートするために、TiDBはv5.4.0以降のGBK文字セットをサポートしています。 TiDBクラスタを初めて初期化するときにTiDB構成ファイルで
new_collations_enabled_on_first_bootstrap
オプションを有効にした後、TiDBGBK文字セットはgbk_bin
とgbk_chinese_ci
の両方の照合をサポートします。GBK文字セットを使用する場合は、互換性の制限に注意する必要があります。詳細については、 文字セットと照合-GBKを参照してください。
安全
TiSparkはユーザー認証と承認をサポートします
TiSpark 2.5.0以降、TiSparkは、データベースユーザー認証とデータベースまたはテーブルレベルでの読み取り/書き込み認証の両方をサポートしています。この機能を有効にすると、データを取得するための描画などの不正なバッチタスクをビジネスが実行するのを防ぐことができます。これにより、オンラインクラスターの安定性とデータセキュリティが向上します。
この機能はデフォルトで無効になっています。有効になっている場合、TiSparkを介して操作するユーザーに必要な権限がない場合、ユーザーはTiSparkから例外を受け取ります。
TiUPは、rootユーザーの初期パスワードの生成をサポートしています
クラスタを開始するためのコマンドに
--init
つのパラメーターが導入されています。このパラメーターを使用すると、TiUPを使用してデプロイされたTiDBクラスタで、TiUPはデータベースrootユーザーの初期の強力なパスワードを生成します。これにより、パスワードが空のrootユーザーを使用する際のセキュリティリスクが回避され、データベースのセキュリティが確保されます。
パフォーマンス
列指向ストレージエンジンTiFlashとコンピューティングエンジンMPPの安定性とパフォーマンスを継続的に改善します
MPPエンジンへのより多くの関数の一時停止をサポートします。
- 文字
RPAD()
関数STRCMP()
LPAD()
SUBDATE()
関数QUARTER()
ADDDATE()
DATE_ADD()
DATE_SUB()
- 文字
リソース使用率を改善するためのエラスティックスレッドプール機能の導入(実験的)
TiKVからデータを複製するときに、行ベースのストレージ形式から列ベースのストレージ形式にデータを変換する効率を向上させます。これにより、データ複製の全体的なパフォーマンスが50%向上します。
一部の構成項目のデフォルト値を調整することにより、TiFlashのパフォーマンスと安定性を向上させます。 HTAPハイブリッドロードでは、単一のテーブルに対する単純なクエリのパフォーマンスが最大20%向上します。
セッション変数を介して、指定された時間範囲内の履歴データを読み取ります
TiDBは、 Raftコンセンサスアルゴリズムに基づくマルチレプリカ分散データベースです。高同時実行性と高スループットのアプリケーションシナリオに直面して、TiDBは、フォロワーレプリカを介して読み取りパフォーマンスをスケールアウトし、読み取り要求と書き込み要求を分離できます。
さまざまなアプリケーションシナリオに対して、TiDBはフォロワー読み取りの2つのモードを提供します。強一貫性の読み取りと弱一貫性の履歴読み取りです。強一貫性のある読み取りモードは、リアルタイムデータを必要とするアプリケーションシナリオに適しています。ただし、このモードでは、リーダーとフォロワー間のデータレプリケーションの待ち時間とスループットの低下により、特に地理的に分散された展開の場合、読み取り要求の待ち時間が長くなる可能性があります。
リアルタイムデータに対する要件がそれほど厳しくないアプリケーションシナリオでは、履歴読み取りモードをお勧めします。このモードは、待ち時間を短縮し、スループットを向上させることができます。 TiDBは現在、次の方法による履歴データの読み取りをサポートしています。SQLステートメントを使用して、過去のある時点からデータを読み取るか、過去の時点に基づいて読み取り専用トランザクションを開始します。どちらの方法も、特定の時点または指定された時間範囲内の履歴データの読み取りをサポートしています。詳しくは
AS OF TIMESTAMP
句を使用して履歴データを読み取るをご覧ください。v5.4.0以降、TiDBは、セッション変数を介して指定された時間範囲内の履歴データの読み取りをサポートすることにより、履歴読み取りモードの使いやすさを向上させています。このモードは、準リアルタイムのシナリオで低遅延、高スループットの読み取り要求を処理します。変数は次のように設定できます。
set @@tidb_replica_read=leader_and_follower set @@tidb_read_staleness="-5"
この設定により、TiDBは最も近いリーダーまたはフォロワーノードを選択し、5秒以内に最新の履歴データを読み取ることができます。
インデックスマージのGA
インデックスマージは、SQL最適化の実験的機能としてTiDBv4.0で導入されました。このメソッドは、クエリで複数列のデータのスキャンが必要な場合に、条件フィルタリングを大幅に高速化します。例として次のクエリを取り上げます。
WHERE
ステートメントで、OR
で接続されたフィルタリング条件の列key1とkey2にそれぞれのインデックスがある場合、インデックスマージ機能はそれぞれのインデックスを同時にフィルタリングし、クエリ結果をマージして、マージされた結果を返します。SELECT * FROM table WHERE key1 <= 100 OR key2 = 200;
TiDB v4.0より前は、テーブルに対するクエリは、一度に1つのインデックスのみを使用してフィルタリングすることをサポートしていました。データの複数の列をクエリする場合は、インデックスマージを有効にして、個々の列のインデックスを使用することにより、正確なクエリ結果を短時間で取得できます。インデックスマージは、不要な全表スキャンを回避し、多数の複合インデックスを確立する必要がありません。
v5.4.0では、インデックスマージはGAになります。ただし、次の制限に注意する必要があります。
インデックスマージは、選言標準形( X1⋁X2⋁ … Xn )のみをサポートします。つまり、この機能は、
WHERE
句のフィルタリング条件がOR
で接続されている場合にのみ機能します。v5.4.0以降の新しくデプロイされたTiDBクラスターの場合、この機能はデフォルトで有効になっています。以前のバージョンからアップグレードされたv5.4.0以降のTiDBクラスターの場合、この機能はアップグレード前の設定を継承し、必要に応じて設定を変更できます(v4.0より前のTiDBクラスターの場合、この機能は存在せず、デフォルトで無効になっています) 。
Raft Engineのサポート(実験的)
TiKVのログストレージエンジンとしてRaft Engineを使用することをサポートします。 RocksDBと比較して、 Raft EngineはTiKVI / O書き込みトラフィックを最大40%、CPU使用率を10%削減し、特定の負荷の下でフォアグラウンドスループットを約5%向上させ、テールレイテンシーを20%削減します。さらに、 Raft Engineはログのリサイクルの効率を改善し、極端な状況でのログの蓄積の問題を修正します。
Raft Engineはまだ実験的機能であり、デフォルトでは無効になっています。 Raft EngineのRaftEngineのデータ形式は、以前のバージョンと互換性がないことに注意してください。クラスタをアップグレードする前に、すべてのTiKVノードでRaft Engineが無効になっていることを確認する必要があります。 RaftEngineはRaft Engine以降のバージョンでのみ使用することをお勧めします。
PREDICATE COLUMNS
に関する統計の収集をサポート(実験的)ほとんどの場合、SQLステートメントを実行するとき、オプティマイザーは一部の列(
WHERE
、およびJOIN
GROUP BY
の列など)の統計のみを使用しORDER BY
。これらの使用される列はPREDICATE COLUMNS
と呼ばれます。v5.4.0以降、
tidb_enable_column_tracking
システム変数の値をON
に設定して、TiDBがPREDICATE COLUMNS
を収集できるようにすることができます。設定後、TiDBは100*
stats-lease
ごとにPREDICATE COLUMNS
の情報をmysql.column_stats_usage
のシステムテーブルに書き込みます。ビジネスのクエリパターンが安定している場合は、ANALYZE TABLE TableName PREDICATE COLUMNS
構文を使用して、PREDICATE COLUMNS
列のみの統計を収集できます。これにより、統計収集のオーバーヘッドを大幅に削減できます。統計の同期読み込みをサポート(実験的)
v5.4.0以降、TiDBは同期ロード統計機能を導入しています。この機能はデフォルトで無効になっています。この機能を有効にした後、TiDBは、SQLステートメントの実行時に、大きなサイズの統計(ヒストグラム、TopN、Count-Min Sketch統計など)をメモリに同期的にロードできます。これにより、SQL最適化の統計の完全性が向上します。
安定性
ANALYZE構成の永続化をサポート
統計は、オプティマイザーが実行プランを生成するときに参照する基本情報の1つのタイプです。統計の正確さは、生成された実行プランが妥当であるかどうかに直接影響します。統計の正確性を確保するために、テーブル、パーティション、およびインデックスごとに異なるコレクション構成を設定する必要がある場合があります。
v5.4.0以降、TiDBはいくつかの
ANALYZE
構成の永続化をサポートしています。この機能により、既存の構成を将来の統計収集に簡単に再利用できます。ANALYZE
構成永続化機能はデフォルトで有効になっています(システム変数tidb_analyze_version
は2
で、tidb_persist_analyze_options
はデフォルトでON
です)。この機能を使用して、ステートメントを手動で実行するときに、ANALYZE
ステートメントで指定された永続性構成を記録できます。記録されると、次にTiDBが統計を自動的に更新するか、これらの構成を指定せずに手動で統計を収集すると、TiDBは記録された構成に従って統計を収集します。
高可用性とディザスタリカバリ
クラスタへのバックアップタスクの影響を軽減します
バックアップと復元(BR)には、自動調整機能が導入されています(デフォルトで有効になっています)。この機能は、クラスタリソースの使用状況を監視し、バックアップタスクで使用されるスレッドの数を調整することで、バックアップタスクがクラスタに与える影響を減らすことができます。場合によっては、バックアップ用のクラスタハードウェアリソースを増やして自動調整機能を有効にすると、クラスタへのバックアップタスクの影響を10%以下に制限できます。
バックアップのターゲットストレージとしてAzureBlobStorageをサポートする
Backup&Restore(BR)は、リモートバックアップストレージとしてAzureBlobStorageをサポートします。 TiDBをAzureCloudにデプロイすると、クラスタデータをAzureBlobStorageサービスにバックアップできるようになります。
データ移行
TiDB Lightningには、データを含むテーブルへのデータのインポートを許可するかどうかを決定するための新機能が導入されています。
TiDB Lightningでは、構成アイテム
incremental-import
が導入されています。データを含むテーブルへのデータのインポートを許可するかどうかを決定します。デフォルト値はfalse
です。並列インポートモードを使用する場合は、構成をtrue
に設定する必要があります。TiDB Lightningは、並列インポート用のメタ情報を格納するスキーマ名を導入します
TiDB Lightningは、
meta-schema-name
の構成アイテムを導入します。並列インポートモードでは、このパラメーターは、ターゲットクラスタの各TiDB Lightningインスタンスのメタ情報を格納するスキーマ名を指定します。デフォルトでは、値は「lightning_metadata」です。このパラメーターに設定される値は、同じ並列インポートに参加する各TiDB Lightningインスタンスで同じである必要があります。そうしないと、インポートされたデータの正確性を保証できません。TiDB Lightningは重複した解像度を導入します
ローカルバックエンドモードでは、 TiDB Lightningは、データのインポートが完了する前に重複データを出力し、その重複データをデータベースから削除します。インポートの完了後に重複データを解決し、アプリケーションルールに従って挿入する適切なデータを選択できます。後続の増分データ移行フェーズで発生する重複データによって引き起こされるデータの不整合を回避するために、重複データに基づいてアップストリームデータソースをクリーンアップすることをお勧めします。
TiDBデータ移行(DM)でのリレーログの使用を最適化する
source
の構成でenable-relay
のスイッチを回復します。start-relay
およびstop-relay
コマンドを使用して、リレーログの動的な有効化と無効化をサポートします。リレーログのステータスを
source
にバインドします。source
は、DMワーカーに移行された後も、有効または無効の元のステータスを維持します。リレーログのストレージパスをDM-worker構成ファイルに移動します。
DMでの照合順序の処理を最適化する
collation_compatible
の構成アイテムを追加します。値のオプションはloose
(デフォルト)とstrict
です:- アプリケーションに照合順序に関する厳密な要件がなく、クエリ結果の照合順序がアップストリームとダウンストリームで異なる可能性がある場合は、デフォルトの
loose
モードを使用してエラーの報告を回避できます。 - アプリケーションに照合順序に関する厳しい要件があり、照合順序がアップストリームとダウンストリームの間で一貫している必要がある場合は、
strict
モードを使用できます。ただし、ダウンストリームがアップストリームのデフォルトの照合順序をサポートしていない場合、データレプリケーションでエラーが報告されることがあります。
- アプリケーションに照合順序に関する厳密な要件がなく、クエリ結果の照合順序がアップストリームとダウンストリームで異なる可能性がある場合は、デフォルトの
DMの
transfer source
を最適化して、レプリケーションタスクのスムーズな実行をサポートしますDMワーカーノードの負荷が不均衡な場合、
transfer source
コマンドを使用して、source
の構成を別の負荷に手動で転送できます。最適化後、transfer source
コマンドは手動操作を簡素化します。 DMは他の操作を内部で完了するため、関連するすべてのタスクを一時停止するのではなく、ソースをスムーズに転送できます。DM OpenAPIが一般提供になります(GA)
DMは、データソースの追加やタスクの管理など、APIを介した日常の管理をサポートします。 v5.4.0では、DMOpenAPIがGAになります。
診断効率
Top SQL (実験的機能)
新しい実験的機能であるTop SQL (デフォルトでは無効)が導入され、ソースを消費するクエリを簡単に見つけることができます。
TiDBデータ共有サブスクリプション
クラスターに対するTiCDCの影響を最適化する
TiCDCを使用すると、TiDBクラスターのパフォーマンスへの影響が大幅に軽減されます。テスト環境では、TiCDCがTiDBに与えるパフォーマンスへの影響を5%未満に減らすことができます。
展開とメンテナンス
継続的なプロファイリングの強化(実験的)
サポートされるその他のコンポーネント:TiDB、PD、およびTiKVに加えて、TiDBv5.4.0はTiFlashのCPUプロファイリングもサポートします。
より多くの形式のプロファイリング表示:フレームチャートでのCPUプロファイリングとGoroutine結果の表示をサポートします。
サポートされるより多くのデプロイメント環境:継続的プロファイリングは、 TiDB Operatorを使用してデプロイされたクラスターにも使用できます。
継続的プロファイリングはデフォルトで無効になっており、TiDBダッシュボードで有効にできます。
継続的プロファイリングは、v1.9.0以降のTiUPまたはv1.3.0以降のTiDB Operatorを使用してデプロイまたはアップグレードされたクラスターに適用できます。
改善点
TiDB
- キャッシュされたクエリプラン#30370をクリアするための
ADMIN {SESSION | INSTANCE | GLOBAL} PLAN_CACHE
構文をサポートする
- キャッシュされたクエリプラン#30370をクリアするための
TiKV
- コプロセッサーは、ストリームのような方法でリクエストを処理するためのページングAPIをサポートします#11448
- 読み取り操作が2次ロックが解決されるのを待つ必要がないように
read-through-lock
をサポートします#11402 - ディスクスペースの枯渇によるpanicを回避するためのディスク保護メカニズムを追加する#10537
- ログのアーカイブとローテーションのサポート#11651
- Raftクライアントによるシステムコールを減らし、CPU効率を向上させます#11309
- コプロセッサーは、部分文字列をTiKV1にプッシュダウンすることをサポートし#11495
- 読み取りコミット分離レベル#11485で読み取りロックをスキップすることにより、スキャンパフォーマンスを向上させます
- バックアップ操作で使用されるデフォルトのスレッドプールサイズを減らし、ストレスが高いときにスレッドプールの使用を制限します#11000
- アプライスレッドプールとストアスレッドプールのサイズの動的調整をサポート#11159
snap-generator
スレッドプール#11247のサイズの構成をサポートします。- 読み取りと書き込みが頻繁に行われるファイルが多数ある場合に発生するグローバルロック競合の問題を最適化する#250
PD
TiFlash
- ローカルオペレーターのコミュニケーションを最適化する
- スレッドの頻繁な作成または破棄を回避するために、gRPCの非一時的なスレッド数を増やします
ツール
バグの修正
TiDB
- クラスタをv4.xから#25422にアップグレードするときに発生する
tidb_analyze_version
の値の変更の問題を修正します。 - サブクエリで異なる照合を使用するときに発生する間違った結果の問題を修正します#30748
- TiDBの
concat(ifnull(time(3))
の結果がMySQL3の結果と異なる問題を修正し#29498 - 楽観的なトランザクションモード#30410での潜在的なデータインデックスの不整合の問題を修正します
- #30200をTiKV1にプッシュダウンできない場合に、IndexMergeのクエリ実行プランが間違っている問題を修正します。
- 列タイプの同時変更によりスキーマとデータの間に不整合が生じる問題を修正します#31048
- サブクエリ#30913がある場合にIndexMergeクエリの結果が間違っている問題を修正します
- クライアントでFetchSizeの設定が大きすぎる場合に発生するpanicの問題を修正します#30896
- LEFTJOINが誤ってINNERJOIN1に変換される可能性がある問題を修正し#20510
CASE-WHEN
式と照合順序を一緒に使用するとpanicが発生する可能性がある問題を修正します#30245IN
の値に2進定数#31261が含まれている場合に発生する誤ったクエリ結果の問題を修正します- CTEにサブクエリ#31255がある場合に発生する誤ったクエリ結果の問題を修正します
INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
ステートメントを実行するとpanicになる問題を修正します#28078- INDEXHASHJOINが
send on closed channel
エラー#31129を返す問題を修正します
- クラスタをv4.xから#25422にアップグレードするときに発生する
TiKV
PD
TiFlash
- MPPクエリが停止したときにTiFlashがpanicになる可能性がある問題を修正します
where <string>
句を含むクエリが間違った結果を返す問題を修正します- 整数主キーの列タイプをより広い範囲に設定するときに発生する可能性があるデータの不整合の潜在的な問題を修正します
- 入力時刻が1970-01-0100:00:01UTCより前の場合、
unix_timestamp
の動作がTiDBまたはMySQLの動作と矛盾する問題を修正します。 - 再起動後にTiFlashが
EstablishMPPConnection
エラーを返す可能性がある問題を修正します CastStringAsDecimal
の動作がTiFlashとTiDB/TiKVで一貫していない問題を修正します- クエリ結果に
DB::Exception: Encode type of coprocessor response is not CHBlock
のエラーが返される問題を修正します castStringAsReal
の動作がTiFlashとTiDB/TiKVで一貫していない問題を修正します- TiFlashの
date_add_string_xxx
関数の返される結果がMySQLの結果と矛盾する問題を修正します
ツール
バックアップと復元(BR)
TiCDC
min.insync.replicas
が#3994より小さい場合、レプリケーションを実行できない問題を修正しreplication-factor
。cached region
モニタリングメトリックが負の#4300である問題を修正しますmq sink write row
に監視データがないという問題を修正します#3431- #3810の互換性の問題を修正し
sql mode
- レプリケーションタスクが削除されたときに発生する可能性のあるpanicの問題を修正します#3128
- デフォルトの列値#3929を出力するときに発生するpanicとデータの不整合の問題を修正します
- デフォルト値を複製できない問題を修正します#3793
- デッドロックによってレプリケーションタスクがスタックするという潜在的な問題を修正します#4055
- ディスクが完全に書き込まれたときにログが出力されない問題を修正します#3362
- DDLステートメントの特別なコメントによってレプリケーションタスクが停止する問題を修正します#3755
- RHELリリース#3584のタイムゾーンの問題が原因でサービスを開始できない問題を修正します
- 不正確なチェックポイント#3545によって引き起こされる潜在的なデータ損失の問題を修正します
- コンテナ環境でのOOMの問題を修正します#1798
config.Metadata.Timeout
の誤った構成によって引き起こされるレプリケーション停止の問題を修正し#3352 。
TiDBデータ移行(DM)
TiDB Lightning
TiDB Binlog
CREATE PLACEMENT POLICY
ステートメント#1118と互換性がないためにDrainerが失敗する問題を修正します