TiDB 2.1 ベータ リリース ノート

2018 年 6 月 29 日に、TiDB 2.1 ベータ版がリリースされました。TiDB 2.0 と比較して、このリリースでは安定性、SQL オプティマイザー、統計情報、実行エンジンが大幅に改善されています。

ティビ

  • SQL オプティマイザー
    • 実行パフォーマンスを向上させるために選択範囲Index Joinを最適化します
    • 相関サブクエリを最適化し、 Filterプッシュダウンし、インデックス範囲を拡張して、一部のクエリの効率を桁違いに向上させます。
    • UPDATEDELETEの文のIndex HintJoin Hintを支持する
    • 利用可能なインデックスが存在しない場合にヒントTIDM_SMJを検証する
    • ABS IS TRUEのプッシュFLOOR CEIL IS FALSE
    • 特に定数畳み込み処理でIFIFNULL関数を処理する
  • SQL実行エンジン
    • 並列Hash Aggregate演算子を実装し、いくつかのシナリオでHash Aggregateの計算パフォーマンスを350%向上
    • 並列Project演算子を実装し、いくつかのシナリオでパフォーマンスを74%向上
    • 実行パフォーマンスを向上させるために、 Hash JoinつのテーブルのうちInnerのテーブルとOuterのテーブルを同時に読み取ります。
    • いくつかのシナリオでINSERT … ON DUPLICATE KEY UPDATE …の誤った結果を修正
    • 組み込み関数CONCAT_WSFLOORCEILDIVの誤った結果を修正
  • サーバ
    • HTTP APIを追加して、TiKVクラスター内のテーブルリージョンの分散を分散します。
    • 自動Analyzeのしきい値を制御するためのauto_analyze_ratioシステム変数を追加する
    • 一般ログを開くかどうかを制御するHTTP APIを追加します
    • ログレベルをオンラインで変更するためのHTTP APIを追加する
    • 一般ログとスロークエリログにユーザー情報を追加する
    • サーバー側カーソルをサポート
  • 互換性
    • より多くのMySQL構文をサポート
    • bit集計関数がALLパラメータをサポートするようにする
    • SHOW PRIVILEGES声明を支持する
  • DMML の
    • INSERT INTO SELECT文のメモリ使用量を減らす
    • PlanCacheのパフォーマンス問題を修正
    • トランザクションの自動再試行回数を制御するためのシステム変数tidb_retry_limitを追加します
    • トランザクションが自動的に試行されるかどうかを制御するtidb_disable_txn_auto_retryシステム変数を追加します
    • timeタイプの書き込まれたデータの精度の問題を修正
    • 競合トランザクションのパフォーマンスを最適化するために、ローカルで競合するトランザクションのキューをサポートします。
    • UPDATEのステートメントのうちAffected Rowsを修正する
    • insert ignore on duplicate key updateのステートメントパフォーマンスを最適化する
  • DDL
    • CreateTable文の実行速度を最適化する
    • ADD INDEXの実行速度を最適化し、いくつかのシナリオで大幅に改善しました
    • 追加された列数がAlter table add columnでテーブル列数の制限を超える問題を修正
    • DDL ジョブの再試行により異常な状況で TiKV への負荷が増加する問題を修正しました。
    • 異常な状況で TiDB がスキーマ情報を継続的に再ロードする問題を修正
    • SHOW CREATE TABLEの結果にFOREIGN KEY関連情報を出力しない
    • TiDBがDDL Ownerであるかどうかの判断を容易にするためにselect tidb_is_ddl_owner()ステートメントをサポートする
    • 一部のシナリオでインデックスがYear型で削除される問題を修正
    • 同時実行シナリオにおけるテーブル名の変更の問題を修正
    • AlterTableForce構文をサポートする
    • AlterTableRenameIndex構文をFromKeyToKeyでサポートする
    • admin show ddl jobsの出力情報にテーブル名とデータベース名を追加します

PD

  • ネットワーク分離後にネットワークが回復したときにリーダーの再選出を回避するために、PDノード間でRaft PreVoteを有効にする
  • バランススケジューラが小さな領域を頻繁にスケジュールする問題を最適化します。
  • ホットスポットスケジューラを最適化して、トラフィック統計情報のジッタに対する適応性を向上させます。
  • スケジュールregion mergeときに行数の多い領域をスキップする
  • スケジュール中にマシン障害によってデータが利用できなくなるリスクを軽減するために、デフォルトでraft learner有効にします。
  • pd-recoverからmax-replica削除
  • Filter指標を追加
  • tikv-ctl unsafe リカバリ後にリージョン情報が更新されない問題を修正
  • 一部のシナリオでレプリカの移行によって TiKV ディスク領域が使い果たされる問題を修正しました
  • 互換性に関する注意事項
    • 新しいバージョンのstorageエンジンの更新により、v2.0.x 以前へのロールバックはサポートされません。
    • 新しいバージョンのPDではデフォルトでraft learner有効にします。クラスタを1.xから2.1にアップグレードする場合は、アップグレード前にマシンを停止するか、最初にTiKVにローリングアップデートを適用してからPDを適用する必要があります。

ティクヴ

  • Rustをバージョンnightly-2018-06-14にアップグレードする
  • Raft PreVoteを有効にすると、ネットワーク分離後にネットワークが回復したときに生成されるリーダーの再選出を回避できます。
  • RocksDB の各レイヤーのファイル数と関連情報ingestを表示するメトリックを追加します。
  • GC が動作しているときにバージョンが多すぎるkey印刷する
  • static metric使用してマルチラベルメトリックのパフォーマンスを最適化します(YCSB raw getは3%向上します)
  • 複数のモジュールからbox削除し、パターンを使用して動作パフォーマンスを向上します(YCSB raw getは3%向上します)
  • asynchronous log使用するとログの書き込みパフォーマンスが向上します
  • スレッドのステータスを収集するためのメトリックを追加する
  • アプリケーションで使用されるbox減らすことでメモリコピー回数を減らし、パフォーマンスを向上させます。

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