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 倍以上です。 View のサポートのおかげで、TPC-H 50G Q15 は正常に実行できるようになりました。
  • ウィンドウ関数、ビュー (Experimental)、パーティション テーブル、プラグイン フレームワーク、悲観的ロック (Experimental)、およびSQL Plan Managementを含む新機能。

TiDB

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

PD

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

TiKV

  • 分散 GC と同時ロック解決をサポートして GC パフォーマンスを向上
  • raw_scanraw_batch_scanの反転をサポート
  • マルチスレッドRaftstoreとマルチスレッド アプライをサポートし、単一ノード内のスケーラビリティ、同時実行容量、リソース使用量を向上させます。同じレベルの圧力下でパフォーマンスが 70% 向上
  • Raftメッセージのバッチ送受信をサポートし、書き込み集中型のシナリオで TPS を 7% 向上させます。
  • 書き込み停止を回避するために、スナップショットを適用する前に RocksDB レベル 0 ファイルのチェックをサポートします
  • Titan の導入
  • 悲観的トランザクション モードのサポート (Experimental)
  • HTTP経由での監視情報の取得をサポート
  • Insertのセマンティクスを変更して、キーがない場合にのみ Prewrite が成功できるようにします。
  • ツールによる収集と分析を容易にするために、再構築されたログ システムを使用して統一されたログ形式仕様を開発します。
  • 構成情報とキー バインド交差に関連するパフォーマンス メトリクスを追加します。
  • RawKV でローカル リーダーをサポートしてパフォーマンスを向上させる
  • エンジン
    • メモリ管理を最適化して、メモリの割り当てとコピーを削減しますIterator Key Bound Option
    • 異なる列ファミリー間でのblock cache共有のサポート
  • サーバ
    • コンテキストスイッチのオーバーヘッドをbatch commandsから削減
    • txn schedulerを削除
    • read indexGC workerに関する監視項目を追加
  • RaftStore
    • RaftStore からの CPU 消費を最適化するための Hibernate リージョンのサポート (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の読み取りをサポートする Arbiter ツールを追加し、データを MySQL にレプリケートします
    • Reparoによるレプリケーションを必要としないファイルのフィルタリングのサポート
    • 生成された列のレプリケートをサポート
    • DDL クエリを解析するためのさまざまな SQL モードの使用をサポートするsyncer.sql-mode構成項目を追加します。
    • 複製されないテーブルのフィルタリングをサポートするためのsyncer.ignore-table構成アイテムを追加します
  • 同期差分インスペクター
    • チェックポイントをサポートして検証ステータスを記録し、再起動後に最後に保存されたポイントから検証を続行します
    • チェックサムを計算してデータの整合性をチェックするための構成アイテムをonly-use-checksum追加します
    • TiDB 統計と複数の列を使用してチャンクを分割して比較し、より多くのシナリオに適応できるようにサポート

TiDB Ansible

  • 次の監視コンポーネントを安定バージョンにアップグレードします。
    • プロメテウス V2.2.1 から V2.8.1 へ
    • V0.4.0 から V0.7.0 へのプッシュゲートウェイ
    • Node_exporter V0.15.2 から V0.17.0 へ
    • アラートマネージャー 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の導入と運用をサポート
  • テーブルごとのLeader分布の表示をサポートするようにtable-regions.pyスクリプトを最適化します。
  • TiDB 監視を最適化し、SQL カテゴリごとにレイテンシー関連の監視項目を追加します
  • CentOS 7.0+ および Red Hat 7.0+ オペレーティング システムのみをサポートするようにオペレーティング システムのバージョン制限を変更します。
  • クラスターの最大 QPS を予測する監視項目を追加します (デフォルトでは非表示)

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

Playground
新規
登録なしで TiDB の機能をワンストップでインタラクティブに体験できます。
製品
TiDB Cloud
TiDB
価格
PoC お問い合わせ
エコシステム
TiKV
TiFlash
OSS Insight
© 2024 PingCAP. All Rights Reserved.
Privacy Policy.