TiDB 3.0 GA リリースノート

発売日: 2019年6月28日

TiDB バージョン: 3.0.0

TiDB Ansible バージョン: 3.0.0

概要

2019 年 6 月 28 日に、TiDB 3.0 GA がリリースされました。対応する TiDB Ansible バージョンは 3.0.0 です。TiDB 2.1 と比較して、このリリースでは次の点が大幅に改善されています。

  • 安定性。TiDB 3.0 は、最大 150 以上のノードと 300 TB 以上のstorageを備えた大規模クラスターで長期的な安定性を実証しています。
  • 使いやすさ。TiDB 3.0 では、標準化されたスロー クエリ ログ、よく開発されたログ ファイル仕様、およびユーザーの操作コストを節約するEXPLAIN ANALYZEや SQL トレースなどの新機能など、使いやすさが多面的に向上しています。
  • パフォーマンス。TiDB 3.0 のパフォーマンスは、TPC-C ベンチマークでは TiDB 2.1 の 4.5 倍、Sysbench ベンチマークでは 1.5 倍以上です。Views のサポートにより、TPC-H 50G Q15 は正常に実行できるようになりました。
  • 新しい機能には、ウィンドウ関数、ビュー (Experimental)、パーティション テーブル、プラグイン フレームワーク、悲観的ロック (Experimental)、およびSQL Plan Management含まれます。

ティビ

  • 新機能
    • DENSE_RANK関数LEADサポートNTILECUME_DIST LAG PERCENT_RANKのすべてRANKウィンドウ関数と互換性FIRST_VALUE NTH_VALUE ROW_NUMBER LAST_VALUE
    • ビューのサポート (Experimental)
    • テーブルパーティションの改善
      • 範囲パーティションのサポート
      • ハッシュパーティションをサポート
    • IP ホワイトリスト ( Enterprise ) や監査ログ ( Enterprise ) などのプラグインをサポートするプラグイン フレームワークを追加します。
    • クエリの安定性を確保するために SQL 実行プラン バインディングを作成する SQL プラン管理機能をサポートします (Experimental)
  • SQL オプティマイザー
    • NOT EXISTSサブクエリを最適化し、 Anti Semi Joinに変換してパフォーマンスを向上させます。
    • Outer Joinの定数伝播を最適化し、 Outer Joinの除去の最適化ルールを追加して、非効率的な計算を減らし、パフォーマンスを向上させます。
    • パフォーマンスを向上させるために、集計後にINサブクエリをInner Join実行するように最適化します。
    • Index Join最適化してより多くのシナリオに適応する
    • レンジパーティションのパーティションプルーニング最適化ルールの改善
    • _tidb_rowidのクエリロジックを最適化してテーブル全体のスキャンを回避し、パフォーマンスを向上させる
    • フィルタ内に関連する列がある場合、複合インデックスのアクセス条件を抽出するときに、インデックスのプレフィックス列をさらに一致させてパフォーマンスを向上させます。
    • 列間の順序相関を利用してコスト見積りの精度を向上させる
    • 貪欲戦略と動的プログラミングアルゴリズムに基づいてJoin Order最適化し、複数のテーブルの結合操作を高速化します。
    • クエリの安定性を向上させるために、実行プランが統計に過度に依存しないようにするためのルールを備えた Skyline Pruning をサポートします。
    • NULL値を持つ単一列インデックスの行数推定の精度を向上
    • 各リージョンでランダムにサンプリングしてテーブル全体のスキャンを回避し、統計収集のパフォーマンスを向上させるサポートFAST ANALYZE
    • 統計収集のパフォーマンスを向上させるために、単調に増加するインデックス列に対する増分分析操作をサポートします。
    • DOステートメントでサブクエリの使用をサポート
    • トランザクションでIndex Join使用をサポート
    • パラメータなしのDDL文をサポートするためにprepare execute最適化します
    • stats-lease変数値が 0 の場合に統計を自動的にロードするようにシステムの動作を変更します。
    • 履歴統計のエクスポートをサポート
    • ヒストグラムのdump相関loadサポート
  • SQL実行エンジン
    • ログ出力を最適化: EXECUTEユーザー変数を出力し、 COMMITトラブルシューティングを容易にするためにスロークエリログを出力します。
    • SQLチューニングの使いやすさを向上させるEXPLAIN ANALYZE機能をサポート
    • 次の行のIDを取得するコマンドadmin show next_row_idをサポートします
    • NAME_CONST JSON_MERGE_PRESERVE JSON_ARRAY_APPEND組み込み関数COALESCE追加しますBENCHMARK JSON_QUOTE
    • チャンクサイズの制御ロジックを最適化し、クエリコンテキストに基づいて動的に調整することで、SQL実行時間とリソース消費を削減します。
    • IndexLookupReader TableReaderメモリ使用量の追跡と制御をサポートしますIndexReader
    • 空のON条件をサポートするように Merge Join 演算子を最適化します。
    • 列が多すぎる単一テーブルの書き込みパフォーマンスを最適化する
    • 逆順でデータをスキャンできるようにすることでadmin show ddl jobsのパフォーマンスを向上
    • ホットスポットの問題を軽減するために、テーブルリージョンを手動で分割するsplit table regionステートメントを追加します。
    • ホットスポットの問題を軽減するために、インデックスリージョンを手動で分割するsplit index regionステートメントを追加します。
    • コプロセッサーへの式のプッシュダウンを禁止するブロックリストを追加します
    • 実行時間またはメモリの設定された制限を超えた場合に、SQLクエリをログに出力するようにExpensive Queryログを最適化します。
  • DDL
    • 文字セットutf8からutf8mb4への移行をサポート
    • デフォルトの文字セットをutf8からutf8mb4に変更する
    • alter schema文を追加して、データベースの文字セットと照合順序を変更します。
    • ALTERアルゴリズムINSTANTサポートINPLACE
    • サポートSHOW CREATE VIEW
    • サポートSHOW CREATE USER
    • 誤って削除されたテーブルの高速回復をサポート
    • ADD INDEXの同時実行数を動的に調整する機能をサポート
    • テーブル作成後の大量の書き込みによって発生する書き込みホット領域を軽減するために、 CREATE TABLEステートメントを使用してテーブルを作成するときに領域を事前に割り当てるpre_split_regionsオプションを追加します。
    • ホットスポットの問題を軽減するために、SQL ステートメントを使用して指定されたテーブルのインデックスと範囲でリージョンを分割することをサポートします。
    • DDLタスクの再試行回数を制限するためにddl_error_count_limitグローバル変数を追加します。
    • ホットスポットの問題を軽減するために、列に AUTO_INCREMENT 属性が含まれている場合にSHARD_ROW_ID_BITS使用して行 ID を分散させる機能を追加します。
    • 無効な DDL メタデータの有効期間を最適化して、TiDB クラスターのアップグレード後に DDL 操作の通常の実行を回復する時間を短縮します。
  • 取引
    • 悲観的トランザクションモードをサポートする(Experimental
    • トランザクション処理ロジックを最適化して、より多くのシナリオに適応します。
      • デフォルト値tidb_disable_txn_auto_retryonに変更します。これは、自動コミットされていないトランザクションは再試行されないことを意味します。
      • tidb_batch_commitシステム変数を追加して、トランザクションを複数のトランザクションに分割し、同時に実行します。
      • tidb_low_resolution_tsoシステム変数を追加して、バッチで取得する TSO の数を制御し、トランザクションが TSO を要求する回数を減らし、一貫性の要件が比較的低いシナリオでのパフォーマンスを向上させます。
      • 分離レベルがSERIALIZABLEに設定されている場合にエラーを報告するかどうかを制御する変数tidb_skip_isolation_level_checkを追加します。
      • tidb_disable_txn_auto_retryシステム変数を変更して、再試行可能なすべてのエラーで機能するようにします。
  • 権限管理
    • ANALYZE USE SHOW PROCESSLIST SET GLOBAL権限チェックを実行する
    • ロールベースのアクセス制御 (RBAC) のサポート (Experimental)
  • サーバ
    • 遅いクエリ ログを最適化します。
      • ログ形式の再構築
      • ログコンテンツを最適化する
      • メモリテーブルのINFORMATION_SCHEMA.SLOW_QUERYADMIN SHOW SLOWのステートメントを使用してスロー クエリ ログをクエリできるように、ログ クエリ メソッドを最適化します。
    • ツールによる収集と分析を容易にするために、ログシステムを再構築した統一ログフォーマット仕様を開発する
    • ステータスのクエリ、TiDB Binlogの有効化、TiDB Binlog戦略の維持と送信など、SQL ステートメントを使用した TiDB Binlogサービスの管理をサポートします。
    • unix_socket使用してデータベースに接続することをサポートします
    • SQL文のサポートTrace
    • トラブルシューティングを容易にするために、 /debug/zip HTTP インターフェースを介して TiDB インスタンスの情報を取得することをサポートします。
    • トラブルシューティングを容易にするために監視項目を最適化します。
      • 統計情報に基づいて実際のデータ量と推定データ量の差を監視するための監視項目をhigh_error_rate_feedback_total追加します。
      • データベースディメンションにQPS監視項目を追加する
    • システム初期化プロセスを最適化して、DDL 所有者のみが初期化を実行できるようにします。これにより、初期化またはアップグレードの起動時間が短縮されます。
    • kill queryの実行ロジックを最適化してパフォーマンスを向上させ、リソースが適切に解放されるようにします。
    • 設定ファイルの有効性をチェックするための起動オプションconfig-checkを追加します
    • 内部エラー再試行のバックオフ時間を制御するシステム変数tidb_back_off_weightを追加します。
    • wait_timeoutinteractive_timeoutシステム変数を追加して、許可される最大アイドル接続を制御します。
    • 接続確立時間を短縮するためにTiKVの接続プールを追加します
  • 互換性
    • ALLOW_INVALID_DATES SQLモードをサポート
    • MySQL 320ハンドシェイクプロトコルをサポート
    • 符号なし BIGINT 列を自動増分列として表示することをサポート
    • SHOW CREATE DATABASE IF NOT EXISTS構文をサポートする
    • CSVファイルのフォールトトレランスload dataを最適化する
    • フィルタリング条件にユーザー変数が含まれている場合、述語プッシュダウン操作を中止して、ユーザー変数を使用してウィンドウ関数をシミュレートするMySQLの動作との互換性を向上させます。

PD

  • 単一ノードからのクラスターの再作成をサポート
  • 大規模クラスタのetcdのstorageボトルネックを解決するために、リージョンメタデータをetcdからgo-leveldbstorageエンジンに移行します。
  • API
    • トゥームストーンストアをクリアするためのremove-tombstone API を追加します
    • リージョン情報を一括クエリするAPI ScanRegionsを追加
    • 実行中の演算子を照会するためのGetOperator API を追加します。
    • GetStores APIのパフォーマンスを最適化する
  • 構成
    • 構成チェックロジックを最適化して構成項目のエラーを回避する
    • リージョン結合の方向を制御するにはenable-two-way-merge追加します
    • ホットリージョンのスケジュールレートを制御するにはhot-region-schedule-limit追加します
    • 複数のしきい値を連続して超える場合は、ホットスポットを識別するためにhot-region-cache-hits-threshold追加します。
    • 1 分あたりに許可されるバランスリージョンオペレータの最大数を制御するためのstore-balance-rate構成項目を追加します。
  • スケジューラの最適化
    • 各店舗のオペレーターの速度を個別に制御する店舗制限メカニズムを追加
    • 異なるスケジューラ間のリソース競合を最適化するためにwaitingOperatorキューをサポートします。
    • スケジューリング レート制限をサポートし、スケジューリング操作を TiKV にアクティブに送信します。これにより、単一ノード上の同時スケジューリング タスクの数を制限することで、スケジューリング レートが向上します。
    • 制限機構に制約されないようRegion Scatterスケジュールを最適化する
    • ホットスポットのスケジューリングが不十分なシナリオで TiKV の安定性テストを容易にするためにshuffle-hot-regionスケジューラを追加します。
  • シミュレーター
    • データインポートシナリオのシミュレーターを追加
    • ストアの異なるハートビート間隔の設定をサポート
  • その他
    • etcd をアップグレードして、ログ出力形式の不一致、事前投票でのLeader選択の失敗、リースのデッドロックの問題を解決します。
    • ツールによる収集と分析を容易にするために、ログシステムを再構築した統一ログフォーマット仕様を開発する
    • スケジューリング パラメータ、クラスター ラベル情報、PD が TSO 要求、ストア ID、アドレス情報を処理するために消費した時間などの監視メトリックを追加します。

ティクヴ

  • 分散GCと同時ロック解決をサポートし、GCパフォーマンスを向上
  • サポートはraw_scanraw_batch_scan逆にしました
  • マルチスレッドRaftstoreとマルチスレッドApplyをサポートし、単一ノード内でのスケーラビリティ、同時実行能力、リソース使用率を向上させます。同じレベルの負荷でパフォーマンスが70%向上します。
  • Raftメッセージのバッチ受信と送信をサポートし、書き込み集中型のシナリオで TPS を 7% 向上します。
  • 書き込み停止を回避するために、スナップショットを適用する前に RocksDB レベル 0 ファイルのチェックをサポートします。
  • 1KiBを超える値のサイズでの書き込みパフォーマンスを向上させ、ある程度の書き込み増幅を軽減するキー値プラグインであるTitanを導入します。
  • 悲観的トランザクションモードをサポートする(Experimental
  • HTTP経由で監視情報を取得できるようにサポート
  • Insertのセマンティクスを変更して、キーがない場合にのみ Prewrite が成功するようにします。
  • ツールによる収集と分析を容易にするために、ログシステムを再構築した統一ログフォーマット仕様を開発する
  • 構成情報とキー境界の交差に関連するパフォーマンスメトリックを追加します
  • パフォーマンスを向上させるためにRawKVのローカルリーダーをサポート
  • エンジン
    • メモリ管理を最適化してメモリ割り当てとコピーを削減するIterator Key Bound Option
    • 異なる列ファミリ間でのblock cache共有をサポート
  • サーバ
    • コンテキストスイッチのオーバーヘッドをbatch commandsから削減
    • txn scheduler削除
    • read indexGC workerに関連する監視項目を追加
  • ラフトストア
    • RaftStore からの CPU 消費を最適化するために Hibernate Regions をサポートする (Experimental)
    • ローカルリーダースレッドを削除する
  • コプロセッサー
    • 計算フレームワークをリファクタリングして、ベクトル演算子、ベクトル式を使用した計算、ベクトル集計を実装し、パフォーマンスを向上させます。
    • TiDB のEXPLAIN ANALYZEステートメントの演算子実行ステータスの提供をサポート
    • コンテキストスイッチのコストを削減するために、 work-stealingスレッドプールモデルに切り替える

ツール

  • TiDB Lightning
    • データテーブルのリダイレクトされたレプリケーションをサポート
    • CSVファイルのインポートをサポート
    • SQLからKVペアへの変換のパフォーマンスを向上
    • パフォーマンスを向上させるために単一テーブルのバッチインポートをサポート
    • TiKVインポーターのパフォーマンスを向上させるために、大きなテーブルのデータとインデックスを個別にインポートすることをサポートします。
    • 新しいファイルに列データが欠落している場合、 row_idまたはデフォルトの列値を使用して欠落している列を埋めることをサポートします。
    • SST ファイルを TiKV にアップロードする際の速度制限をTIKV-importerに設定できるようになりました
  • TiDBBinlog
    • コンテナ環境でブリッジモードをサポートするために、 Drainerにadvertise-addr構成を追加します。
    • トランザクションステータスのクエリを高速化するために、 PumpにGetMvccByEncodeKey関数を追加します。
    • コンポーネント間の通信データを圧縮してネットワークリソースの消費を削減します
    • Kafka からbinlogを読み取り、データを MySQL に複製する Arbiter ツールを追加します。
    • Reparoによるレプリケーションを必要としないファイルのフィルタリングをサポート
    • 生成された列の複製をサポート
    • 異なるSQLモードを使用してDDLクエリを解析できるように、 syncer.sql-mode構成項目を追加します。
    • 複製されないテーブルのフィルタリングをサポートするためにsyncer.ignore-table構成項目を追加します。
  • 同期差分インスペクター
    • 検証ステータスを記録し、再起動後に最後に保存したポイントから検証を続行するためのチェックポイントをサポートします。
    • チェックサムを計算してデータの整合性をチェックするための構成項目をonly-use-checksum追加します
    • より多くのシナリオに適応するために、TiDB 統計と複数の列を使用して比較用にチャンクを分割するサポート

TiDB アンシブル

  • 次の監視コンポーネントを安定バージョンにアップグレードします。
    • Prometheus V2.2.1 から V2.8.1 へ
    • Pushgateway V0.4.0 から V0.7.0 へ
    • Node_exporter V0.15.2 から V0.17.0 へ
    • Alertmanager V0.14.0 から V0.17.0 へ
    • Grafana V4.6.3 から V6.1.6 へ
    • Ansible V2.5.14 から V2.7.11 へ
  • TiKVサマリー監視ダッシュボードを追加して、クラスターのステータスを簡単に表示します。
  • 重複項目を削除し、トラブルシューティングを容易にするために、TiKV トラブルシューティング監視ダッシュボードを追加します。
  • デバッグとトラブルシューティングを容易にするために、TiKV詳細監視ダッシュボードを追加します。
  • ローリングアップデート中にバージョン一貫性の同時チェックを追加して、アップデートのパフォーマンスを向上します。
  • TiDB Lightningの導入と運用をサポート
  • table-regions.pyスクリプトを最適化して、Leader分布をテーブルで表示できるようにしました。
  • TiDB 監視を最適化し、SQL カテゴリ別にレイテンシー関連の監視項目を追加します。
  • オペレーティング システムのバージョン制限を変更し、CentOS 7.0+ および Red Hat 7.0+ オペレーティング システムのみをサポートするようにしました。
  • クラスターの最大 QPS を予測するための監視項目を追加します (デフォルトでは非表示)

このページは役に立ちましたか?