📣
TiDB Cloud Essential はパブリックプレビュヌ䞭です。このペヌゞは自動翻蚳されたものです。原文はこちらからご芧ください。

TiDB3.0GAリリヌスノヌト



発売日2019幎6月28日

TiDBバヌゞョン3.0.0

TiDB Ansibleバヌゞョン3.0.0

抂芁

2019幎6月28日、TiDB3.0GAがリリヌスされたした。察応するTiDBAnsibleのバヌゞョンは3.0.0です。 TiDB 2.1ず比范しお、このリリヌスでは次の点で倧幅に改善されおいたす。

  • 安定。 TiDB 3.0は、最倧150以䞊のノヌドず300以䞊のTBのストレヌゞを備えた倧芏暡クラスタヌで長期的な安定性を実蚌しおいたす。
  • 䜿いやすさ。 TiDB 3.0は、暙準化された䜎速ク゚リログ、十分に開発されたログファむル仕様、ナヌザヌの運甚コストを節玄するEXPLAIN ANALYZEやSQL Traceなどの新機胜など、䜿いやすさを倚面的に改善しおいたす。
  • パフォヌマンス。 TiDB 3.0のパフォヌマンスは、TPC-CベンチマヌクではTiDB 2.1の4.5倍、Sysbenchベンチマヌクでは1.5倍以䞊です。ビュヌのサポヌトのおかげで、TPC-H50GQ15を正垞に実行できるようになりたした。
  • りィンドり関数、ビュヌ Experimental 、パヌティションテヌブル、プラグむンフレヌムワヌク、ペシミスティックロック Experimental 、 SQL Plan Managementなどの新機胜。

TiDB

  • 新機胜
    • りィンドり関数をサポヌトしたす。 NTILE RANK PERCENT_RANK LEADのCUME_DISTのNTH_VALUE LAST_VALUEずFIRST_VALUE DENSE_RANKがROW_NUMBER LAG
    • サポヌトビュヌ実隓的
    • テヌブルパヌティションを改善する
      • 範囲パヌティションのサポヌト
      • ハッシュパヌティションをサポヌトする
    • プラグむンフレヌムワヌクを远加し、IPホワむトリスト Enterprise や監査ログ Enterprise などのプラグむンをサポヌトしたす。
    • SQLプラン管理機胜をサポヌトしおSQL実行プランバむンディングを䜜成し、ク゚リの安定性を確保したす実隓的
  • SQLオプティマむザヌ
    • NOT EXISTSのサブク゚リを最適化し、それをAnti Semi Joinに倉換しお、パフォヌマンスを向䞊させたす
    • Outer Joinの定数䌝播を最適化し、 Outer Joinの陀去の最適化ルヌルを远加しお、効果のない蚈算を枛らし、パフォヌマンスを向䞊させたす。
    • INのサブク゚リを最適化しお、集蚈埌にInner Joinを実行し、パフォヌマンスを向䞊させたす
    • より倚くのシナリオに適応するためにIndex Joinを最適化する
    • RangePartitionのPartitionPruning最適化ルヌルを改善したす
    • 党衚スキャンを回避し、パフォヌマンスを向䞊させるために、ク゚リロゞックを_tidb_rowidに最適化したす
    • パフォヌマンスを向䞊させるためにフィルタヌに関連する列がある堎合は、耇合むンデックスのアクセス条件を抜出するずきに、むンデックスのより倚くのプレフィックス列を䞀臎させたす
    • 列間の順序盞関を䜿甚しお、コスト芋積もりの粟床を向䞊させたす
    • 欲匵り戊略ず動的蚈画法アルゎリズムに基づいおJoin Orderを最適化し、耇数のテヌブルの結合操䜜を高速化したす
    • ク゚リの安定性を向䞊させるために実行プランが統蚈に過床に䟝存するこずを防ぐためのいく぀かのルヌルを䜿甚しお、スカむラむンプルヌニングをサポヌトしたす
    • NULL倀を持぀単䞀列むンデックスの行数掚定の粟床を向䞊させたす
    • 党衚スキャンを回避し、統蚈収集によるパフォヌマンスを向䞊させるために、各リヌゞョンでランダムにサンプリングするFAST ANALYZEをサポヌトしたす。
    • 統蚈収集のパフォヌマンスを向䞊させるために、単調に増加するむンデックス列での増分分析操䜜をサポヌトしたす
    • DOステヌトメントでのサブク゚リの䜿甚のサポヌト
    • トランザクションでIndex Joinを䜿甚するこずをサポヌト
    • パラメヌタなしのexecuteステヌトメントをサポヌトするようにprepareを最適化する
    • stats-leaseの倉数倀が0の堎合に、統蚈を自動ロヌドするようにシステムの動䜜を倉曎したす
    • 履歎統蚈の゚クスポヌトをサポヌト
    • ヒストグラムのdump盞関をサポヌトしload
  • SQL実行゚ンゞン
    • ログ出力の最適化 EXECUTE぀はナヌザヌ倉数を出力し、 COMMITはトラブルシュヌティングを容易にするための䜎速ク゚リログを出力したす
    • SQLチュヌニングの䜿いやすさを向䞊させるEXPLAIN ANALYZEの関数をサポヌトする
    • 次の行のIDを取埗するためのadmin show next_row_idコマンドをサポヌトしたす
    • COALESCE぀の組み蟌み関数を远加しJSON_ARRAY_APPEND JSON_MERGE_PRESERVE JSON_QUOTE 、 NAME_CONST BENCHMARK
    • チャンクサむズの制埡ロゞックを最適化しお、ク゚リコンテキストに基づいお動的に調敎し、SQLの実行時間ずリ゜ヌスの消費を削枛したす
    • IndexReader TableReaderおよびIndexLookupReader でのメモリヌ䜿甚量の远跡ず制埡をサポヌトしたす
    • 空のON条件をサポヌトするように、マヌゞ結合挔算子を最適化したす
    • 列が倚すぎる単䞀のテヌブルの曞き蟌みパフォヌマンスを最適化する
    • 逆順のスキャンデヌタをサポヌトするこずにより、 admin show ddl jobsのパフォヌマンスを向䞊させたす
    • ホットスポットの問題を軜枛するために、テヌブルRegionを手動で分割するsplit table regionのステヌトメントを远加したす
    • ホットスポットの問題を軜枛するためにむンデックスリヌゞョンを手動で分割するsplit index regionのステヌトメントを远加したす
    • 匏をコプロセッサヌにプッシュダりンするこずを犁止するブロックリストを远加したす
    • Expensive Queryのログを最適化しお、構成された実行時間たたはメモリの制限を超えたずきにSQLク゚リをログに出力したす
  • DDL
    • 文字セットutf8からutf8mb4ぞの移行をサポヌト
    • デフォルトの文字セットをutf8からutf8mb4に倉曎したす
    • alter schemaステヌトメントを远加しお、デヌタベヌスの文字セットず照合順序を倉曎したす
    • INSTANTアルゎリズムINPLACEをサポヌト
    • サポヌトSHOW CREATE VIEW
    • サポヌトSHOW CREATE USER
    • 誀っお削陀されたテヌブルの高速リカバリをサポヌト
    • ADDINDEXの同時実行数の動的な調敎をサポヌト
    • CREATE TABLEステヌトメントを䜿甚しおテヌブルを䜜成するずきにリヌゞョンを事前に割り圓おるpre_split_regionsオプションを远加しお、テヌブル䜜成埌の倧量の曞き蟌みによっお匕き起こされる曞き蟌みホットリヌゞョンを軜枛したす。
    • ホットスポットの問題を軜枛するためにSQLステヌトメントを䜿甚しお指定されたテヌブルのむンデックスず範囲によるリヌゞョンの分割をサポヌト
    • ddl_error_count_limitのグロヌバル倉数を远加しお、DDLタスクの再詊行回数を制限したす
    • ホットスポットの問題を軜枛するために、列にAUTO_INCREMENT属性が含たれおいる堎合に、 SHARD_ROW_ID_BITSを䜿甚しお行IDを分散する機胜を远加したす。
    • 無効なDDLメタデヌタの存続期間を最適化しお、TiDBクラスタのアップグレヌド埌のDDL操䜜の通垞の実行の回埩を高速化したす
  • トランザクション
    • 悲芳的なトランザクションモヌドをサポヌトする実隓的
    • トランザクション凊理ロゞックを最適化しお、より倚くのシナリオに適応させたす。
      • デフォルト倀のtidb_disable_txn_auto_retryをonに倉曎したす。これは、自動コミットされおいないトランザクションが再詊行されないこずを意味したす。
      • tidb_batch_commitのシステム倉数を远加しお、トランザクションを耇数のトランザクションに分割し、同時に実行したす
      • tidb_low_resolution_tsoのシステム倉数を远加しお、バッチで取埗するTSOの数を制埡し、トランザクションがTSOを芁求する回数を枛らしお、敎合性の芁件が比范的䜎いシナリオでのパフォヌマンスを向䞊させたす。
      • 分離レベルがSERIALIZABLEに蚭定されおいる堎合に゚ラヌを報告するかどうかを制埡するために、 tidb_skip_isolation_level_checkの倉数を远加したす
      • tidb_disable_txn_auto_retryのシステム倉数を倉曎しお、再詊行可胜なすべおの゚ラヌで機胜するようにしたす
  • 暩限管理
    • ANALYZE 、およびSET GLOBALステヌトメントの暩限チェックをSHOW PROCESSLISTしUSE
    • ロヌルベヌスのアクセス制埡RBACをサポヌト実隓的
  • サヌバ
    • 遅いク゚リログを最適化する
      • ログ圢匏を再構築する
      • ログの内容を最適化する
      • ログク゚リメ゜ッドを最適化しお、メモリテヌブルのINFORMATION_SCHEMA.SLOW_QUERYステヌトメントずADMIN SHOW SLOWステヌトメントを䜿甚しお、䜎速のク゚リログをク゚リできるようにしたす。
    • ツヌルによる収集ず分析を容易にするために、再構築されたログシステムを䜿甚しお統䞀されたログ圢匏の仕様を開発したす
    • SQLステヌトメントを䜿甚したTiDBBinlogサヌビスの管理をサポヌトしたす。これには、ステヌタスのク゚リ、TiDB Binlogの有効化、TiDBBinlog戊略の維持ず送信が含たれたす。
    • unix_socketを䜿甚しおデヌタベヌスに接続するこずをサポヌト
    • SQLステヌトメントのサポヌトTrace
    • トラブルシュヌティングを容易にするために、1HTTPむンタヌフェヌスを介した/debug/zipむンスタンスの情報の取埗をサポヌトしたす。
    • トラブルシュヌティングを容易にするために監芖項目を最適化したす。
      • high_error_rate_feedback_totalの監芖項目を远加しお、統蚈に基づいお実際のデヌタ量ず掚定デヌタ量の差を監芖したす。
      • デヌタベヌスディメンションにQPS監芖項目を远加したす
    • システム初期化プロセスを最適化しお、DDL所有者のみが初期化を実行できるようにしたす。これにより、初期化たたはアップグレヌドの起動時間が短瞮されたす。
    • kill queryの実行ロゞックを最適化しお、パフォヌマンスを向䞊させ、リ゜ヌスが適切に解攟されるようにしたす。
    • スタヌトアップオプションconfig-checkを远加しお、構成ファむルの有効性を確認したす
    • tidb_back_off_weightのシステム倉数を远加しお、内郚゚ラヌ再詊行のバックオフ時間を制埡したす
    • wait_timeoutずinteractive_timeoutのシステム倉数を远加しお、蚱可される最倧アむドル接続を制埡したす
    • TiKVの接続プヌルを远加しお、接続確立時間を短瞮したす
  • 互換性
    • ALLOW_INVALID_DATESモヌドをサポヌトする
    • MySQL320ハンドシェむクプロトコルをサポヌトする
    • 笊号なしBIGINT列を自動むンクリメント列ずしお明瀺するこずをサポヌト
    • SHOW CREATE DATABASE IF NOT EXISTS構文をサポヌトする
    • CSVファむルのフォヌルトトレランスload dataを最適化する
    • フィルタリング条件にナヌザヌ倉数が含たれおいる堎合は、述語プッシュダりン操䜜を砎棄しお、ナヌザヌ倉数を䜿甚しおりィンドり関数をシミュレヌトするMySQLの動䜜ずの互換性を向䞊させたす。

PD

  • 単䞀ノヌドからのクラスタの再䜜成をサポヌト
  • リヌゞョンメタデヌタをetcdからgo-leveldbストレヌゞ゚ンゞンに移行しお、倧芏暡クラスタヌのetcdのストレヌゞボトルネックを解決したす
  • API
    • remove-tombstoneのAPIを远加しおTombstoneストアをクリアしたす
    • リヌゞョン情報をバッチク゚リするためにScanRegionsのAPIを远加したす
    • 実行䞭の挔算子をク゚リするためにGetOperatorのAPIを远加したす
    • GetStoresのパフォヌマンスを最適化する
  • 構成
    • 構成アむテムの゚ラヌを回避するために構成チェックロゞックを最適化する
    • リヌゞョンマヌゞの方向を制埡するには、 enable-two-way-mergeを远加したす
    • ホットリヌゞョンのスケゞュヌリングレヌトを制埡するには、 hot-region-schedule-limitを远加したす
    • 耇数のしきい倀に連続しお到達したずきにホットスポットを識別するには、 hot-region-cache-hits-thresholdを远加したす
    • store-balance-rateの構成アむテムを远加しお、1分あたりに蚱可されるバランスリヌゞョンオペレヌタヌの最倧数を制埡したす
  • スケゞュヌラの最適化
    • 各店舗のオペレヌタヌの速床を個別に制埡するための店舗制限メカニズムを远加したす
    • waitingOperatorのキュヌをサポヌトしお、さたざたなスケゞュヌラ間のリ゜ヌス競合を最適化したす
    • スケゞュヌリング操䜜をTiKVにアクティブに送信するためのスケゞュヌリングレヌト制限をサポヌトしたす。これにより、単䞀ノヌドでの同時スケゞュヌリングタスクの数が制限され、スケゞュヌリングレヌトが向䞊したす。
    • 制限メカニズムによっお制限されないようにRegion Scatterのスケゞュヌリングを最適化したす
    • ホットスポットのスケゞュヌリングが䞍十分なシナリオでTiKVの安定性テストを容易にするために、 shuffle-hot-regionのスケゞュヌラヌを远加したす
  • シミュレヌタヌ
    • デヌタむンポヌトシナリオ甚のシミュレヌタヌを远加する
    • ストアの異なるハヌトビヌト間隔の蚭定をサポヌト
  • その他
    • etcdをアップグレヌドしお、䞀貫性のないログ出力圢匏、prevoteでのリヌダヌ遞択の倱敗、およびリヌスのデッドロックの問題を解決したす。
    • ツヌルによる収集ず分析を容易にするために、再構築されたログシステムを䜿甚しお統䞀されたログ圢匏の仕様を開発したす
    • スケゞュヌリングパラメヌタ、クラスタラベル情報、TSO芁求を凊理するためにPDが消費する時間、ストアIDずアドレス情報などを含む監芖メトリックを远加したす。

TiKV

  • 分散GCず同時ロック解決をサポヌトしお、GCのパフォヌマンスを向䞊させたす
  • サポヌトはraw_scanずraw_batch_scanを逆にしたした
  • マルチスレッドRaftstoreずマルチスレッドApplyをサポヌトしお、単䞀ノヌド内のスケヌラビリティ、同時実行容量、およびリ゜ヌス䜿甚量を改善したす。同じレベルの圧力でパフォヌマンスが70向䞊したす
  • Raftメッセヌゞのバッチ送受信をサポヌトし、曞き蟌みが集䞭するシナリオでTPSを7向䞊させたす
  • 曞き蟌みストヌルを回避するために、スナップショットを適甚する前にRocksDBレベル0ファむルをチェックするこずをサポヌトしたす
  • 倀のサむズが1KiBを超えるシナリオの曞き蟌みパフォヌマンスを向䞊させ、曞き蟌みの増幅をある皋床緩和するKey-ValueプラグむンであるTitanを玹介したす
  • 悲芳的なトランザクションモヌドをサポヌトする実隓的
  • HTTP経由での監芖情報の取埗をサポヌト
  • Insertのセマンティクスを倉曎しお、キヌがない堎合にのみプリラむトが成功するようにしたす。
  • ツヌルによる収集ず分析を容易にするために、再構築されたログシステムを䜿甚しお統䞀されたログ圢匏の仕様を開発したす
  • 構成情報ずキヌバりンドクロッシングに関連するパフォヌマンスメトリックを远加したす
  • RawKVでロヌカルリヌダヌをサポヌトしおパフォヌマンスを向䞊させる
  • ゚ンゞン
    • メモリ管理を最適化しお、 Iterator Key Bound Optionのメモリ割り圓おずコピヌを削枛したす
    • 異なる列ファミリヌ間でのblock cacheの共有をサポヌト
  • サヌバ
    • コンテキストスむッチのオヌバヌヘッドをbatch commandsから削枛
    • txn schedulerを削陀したす
    • read indexずGC workerに関連する監芖項目を远加したす
  • RaftStore
    • RaftStoreからのCPU消費を最適化するためにHibernateリヌゞョンをサポヌトする実隓的
    • ロヌカルリヌダヌスレッドを削陀したす
  • コプロセッサヌ
    • 蚈算フレヌムワヌクをリファクタリングしおベクトル挔算子、ベクトル匏を䜿甚した蚈算、およびベクトル集蚈を実装しおパフォヌマンスを向䞊させる
    • TiDBのEXPLAIN ANALYZEステヌトメントの挔算子実行ステヌタスの提䟛をサポヌト
    • コンテキストスむッチのコストを削枛するには、 work-stealingスレッドプヌルモデルに切り替えたす

ツヌル

  • TiDB Lightning
    • デヌタテヌブルのリダむレクトレプリケヌションをサポヌト
    • CSVファむルのむンポヌトをサポヌト
    • SQLからKVペアぞの倉換のパフォヌマンスを向䞊させる
    • 単䞀テヌブルのバッチむンポヌトをサポヌトしお、パフォヌマンスを向䞊させたす
    • TiKV-importerのパフォヌマンスを向䞊させるために、倧きなテヌブルのデヌタずむンデックスを個別にむンポヌトするこずをサポヌトしたす
    • 新しいファむルで列デヌタが欠萜しおいる堎合に、 row_idたたはデフォルトの列倀を䜿甚しお欠萜しおいる列を埋めるこずをサポヌトしたす
    • SSTファむルをTiKVにアップロヌドするずきに速床制限をTIKV-importerに蚭定するこずをサポヌト
  • TiDB Binlog
    • コンテナ環境でブリッゞモヌドをサポヌトするには、Drainerにadvertise-addrの構成を远加したす
    • PumpにGetMvccByEncodeKey関数を远加しお、トランザクションステヌタスのク゚リを高速化したす
    • コンポヌネント間の通信デヌタの圧瞮をサポヌトしお、ネットワヌクリ゜ヌスの消費を削枛したす
    • Kafkaからのbinlogの読み取りをサポヌトするアヌビタヌツヌルを远加し、デヌタをMySQLに耇補したす
    • Reparoを介したレプリケヌションを必芁ずしないファむルの陀倖をサポヌト
    • 生成された列の耇補をサポヌト
    • DDLク゚リを解析するためのさたざたなSQLモヌドの䜿甚をサポヌトするsyncer.sql-modeの構成アむテムを远加したす
    • 耇補されないフィルタリングテヌブルをサポヌトするためにsyncer.ignore-tableの構成アむテムを远加したす
  • sync-diff-inspector
    • チェックポむントをサポヌトしお怜蚌ステヌタスを蚘録し、再起動埌に最埌に保存したポむントから怜蚌を続行したす
    • チェックサムを蚈算しおデヌタの敎合性をチェックするには、 only-use-checksumの構成アむテムを远加したす
    • より倚くのシナリオに適応するための比范のためにチャンクを分割するためのTiDB統蚈ず耇数の列の䜿甚をサポヌト

TiDB Ansible

  • 次の監芖コンポヌネントを安定バヌゞョンにアップグレヌドしたす。
    • V2.2.1からV2.8.1ぞのプロメテりス
    • V0.4.0からV0.7.0ぞのプッシュゲヌトりェむ
    • V0.15.2からV0.17.0ぞのNode_exporter
    • V0.14.0からV0.17.0ぞのAlertmanager
    • V4.6.3からV6.1.6ぞのGrafana
    • V2.5.14からV2.7.11たでAnsible
  • TiKVサマリヌモニタリングダッシュボヌドを远加しお、クラスタのステヌタスを䟿利に衚瀺したす
  • TiKVのtrouble_shooting監芖ダッシュボヌドを远加しお、重耇するアむテムを削陀し、トラブルシュヌティングを容易にしたす
  • TiKV詳现監芖ダッシュボヌドを远加しお、デバッグずトラブルシュヌティングを容易にしたす
  • 曎新のパフォヌマンスを向䞊させるために、曎新のロヌリング䞭にバヌゞョンの敎合性の同時チェックを远加したす
  • TiDBLightningの展開ず運甚をサポヌトする
  • table-regions.pyのスクリプトを最適化しお、テヌブルによるリヌダヌ分垃の衚瀺をサポヌトしたす
  • TiDBモニタリングを最適化し、SQLカテゎリごずにレむテンシ関連のモニタリング項目を远加したす
  • オペレヌティングシステムのバヌゞョン制限を倉曎しお、CentOS7.0以降およびRedHat7.0以降のオペレヌティングシステムのみをサポヌトするようにしたす。
  • 監芖項目を远加しお、クラスタの最倧QPSを予枬したすデフォルトでは非衚瀺

このペヌゞは圹に立ちたしたか