前回の記事でPingCAPのトレーニングポータルである PingCAP Educationについて説明しました。
今回はPingCAP Educationで受講可能な日本語のコンテンツをご紹介します。
自習形式のハンズオンもついており、動かしながらTiDBを学習することができます。
TiDB 基本ワークショップ
コースカタログから 201.3
で検索すると見つかるかと思います。こちらのワークショップは主にMySQLを現在利用している方向けに、TiDB固有の機能を説明するワークショップです。環境としては TiUP playgroundやTiDB Serverlessを利用するようになっているので、無料で実施することができます。(TiDB Serverlessでは一部実施出来ないコンテンツがあります)
また、ハンズオンで利用するスクリプト類もGitHubで公開されています。
内容については、下記のようになっています。
- 演習 1: テスト用にTiDBクラスタを作成する
- 演習 2: TiDB Lightningを使用してCSVファイルからデータをインポートする
- 演習 3: フラッシュバックテーブルとフラッシュバッククエリ
- 演習 4: AUTO_INCREMENTをTiDBで使用する
- 演習 5: AUTO_RANDOMをTiDBで使用する
- 演習 6: グローバル一時テーブル
- 演習 7: オンラインDDL
- 演習 8: CLUSTEREDとNONCLUSTEREDプライマリキー
- 演習 9: パーティションテーブル
- 演習 10: HOTデータストレージとCOLDデータストレージの階層化の実装
- 演習 11: 分析クエリ用のTiFlash
- 演習 12: TiDBサーバーシステム変数の設定
- 演習 13: TiDBのトランザクション隔離レベル
- 演習 14: リソース制御とデータベース統合 (v7.1)
- 演習 15: 悲観的なトランザクションロック
- 演習 16: 楽観的なトランザクションロック
以下、特に試してほしいものについて説明します。
演習4,5: AUTO_INCREMENTとAUTO_RANDOM
分散環境でシーケンシャルな番号を採番するのは困難です。そもそも単調に増加するはずの時刻シリアル値ですら各サーバで異なるケースが想定されます。
そのためPKとしてよく利用されるAUTO_INCREMENTも、シングルインスタンスのMySQLとは異なる挙動をすることがありますし、性能的な影響もあります。v6.0以前のTiDBでは、AUTO_INCREMENTの番号が巻き戻ることがあるというものだったので、なおさら違和感がありました。
本演習では単調増加をするAUTO_INCREMENTの指定方法と、TiDB固有の一意番号の採番方法であるAUTO_RANDOMについて実際に試して見るものです。TiDBで実運用を行う方は必須の演習です!
演習 11: 分析クエリ用のTiFlash
TiDBではカラムナストレージのTiFlashを使って分析クエリを効率化することができます。TiFlashはオプショナルなストレージとして後から追加でき、追加後テーブルを同期させることでオプティマイザに認識され、以降明示的な指定なしでクエリの実行計画に組み込まれます。
本演習ではTiFlashの基本的な利用方法、実行計画の変化などを確認できます。TiDB Serverlessでは標準でTiFlashが利用できるようになっているのですが、テーブルの同期をさせないと利用されないので、この演習で使い方を学ぶと役立ちます。
演習 14: リソース制御とデータベース統合 ※Serverlessでは利用できません
データベースでオンラインの処理とバッチの処理を実行するようなケースは結構あると思います。その際に問題となるのがリソースの取り合いです。バッチが実行されるとオンライン処理に影響が出て困る、というケースはよく聞きます。
TiDBに実装されたリソースコントロールはそういったリソースの制御を行う機能です。オンライン処理とバッチ処理、それぞれが利用するユーザー毎にリソースの利用量を割り当て、その枠内で処理を実行することで他方が必要なリソースを奪わないようにできます。
またこの機能は複数の業務を一つのクラスタに混在させる際にも有効な機能です。是非試してみてください。
残念ながらTiDB Serverlessでは提供されない機能になります。(TiDB dedicatedでは利用可能です)