0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TiDB Cloudのチュートリアルやってみた

Posted at

サクッとTiDB Cloudのチュートリアルやってみました。

1. アカウントを作ります。

https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 16.28.20.png

右上の【無料で始める】をクリックしてアカウントを登録。
TiDB Cloud(TiDB Serverless)は無料枠が多くあるので基本的に無料で使えます。

2. チュートリアルを始める

スクリーンショット 2024-08-04 16.27.12.png

右下の【?】をクリック。

3. データセットを選択する

https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 16.25.59.png

使ってみたいデータセットをクリック。
今回は【Stream Game Stats】を選択。

4. データセットをimportする

https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 16.37.47.png

【Import Dataset】をクリック。
待つこと数分…

5. データセットのimport完了

https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 17.24.43.png

取り込めた!
【Start】をクリックで次に進む。

6. データセットの内容確認

https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 17.26.32.png

なんと!親切にSQLが用意されている。
【Paste into SQL Editor】をクリックし、右上の【Run】をクリック。
https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 19.11.53.png

データが表示された!

7. さらにデータセットの内容確認

https://pingcap.co.jp/tidb/
スクリーンショット 2024-08-04 19.06.13.png

スクリーンショット 2024-08-04 19.06.36.png

同様に実行してデータが表示されることを確認。

8. Text2SQLなるものを実施

スクリーンショット 2024-08-04 19.07.10.png スクリーンショット 2024-08-04 19.07.46.png

command + iで入力欄を表示させて、【Top 10 popular games】を貼り付ける。

スクリーンショット 2024-08-04 19.08.39.png

SQLが生成されてる〜
(SQLを書かない未来がすぐそこに)

9. Applicationに接続

スクリーンショット 2024-08-04 19.09.48.png

https://steam-insight.vercel.app/
こんな感じでデータの可視化のアプリもできる!という紹介ページが見れます。

10. フィニッシュ

スクリーンショット 2024-08-04 19.10.21.png

お疲れ様でした。

応用編

OLAP系のSQLの場合TiFlashのストレージエンジンを読み込みます。
ただTiFlashが使われるのか、TiKV(OLTP系)が使われるかはオプティマイザ(TiDB)次第。
今回のSQLたちはどちらが使われることになるでしょうか?検証してしました。

準備

TiFlashを使うには事前にテーブル単位で設定が必要です。
そのため今回使うテーブルに対してTiFlashを使用する設定を行います。

-- TiFlashの使用状況を確認
select * from information_schema.tiflash_replica;

スクリーンショット 2024-08-06 10.04.01.png
[empty set]なので使われてないことが確認できた。

-- game_genreテーブルをtiflashを使うように設定
alter table game_genre set tiflash replica 1;

スクリーンショット 2024-08-06 10.06.23.png
1つの複製は少なすぎるらしい…

-- game_genreテーブルをtiflashを使うように設定
alter table game_genre set tiflash replica 2
-- gamesテーブルをtiflashを使うように設定
alter table games set tiflash replica 2;

スクリーンショット 2024-08-06 10.07.28.png
成功!

-- TiFlashの使用状況を確認
select * from information_schema.tiflash_replica;

スクリーンショット 2024-08-06 10.31.03.png
成功!

検証結果

TiFlash使用前

explain analyze
SELECT g.*
FROM game_genre gg
LEFT JOIN games g ON g.app_id = gg.app_id
WHERE gg.genre_id  = 9
ORDER BY g.estimated_owners DESC;

スクリーンショット 2024-08-06 10.20.14.png
task列のcop[tikv]になっているめtikvへアクセスされています。
処理時間は185msだと思われる。

TiFlash使用後

TiFlashと使用前と同じSQLを実行。すると、、、
スクリーンショット 2024-08-06 10.37.35.png
cop[tiflash]ってなってる!これはtiflashが使われたと言うこと。

処理時間は227msだと思われるので、処理が全体としては遅くなっている…
このSQL自体もOLTPの方が適していそう

追加検証

もう少しOLAPで使われそうなSQLにて検証

explain analyze
With r AS (
    SELECT
        games.name,
        genre.genre_name,
        rank() over (partition by genre.genre_id order by games.metacritic_score desc) as ranking
    FROM game_genre gg
    LEFT JOIN genre ON genre.genre_id = gg.genre_id
    LEFT JOIN games ON games.app_id = gg.app_id
    WHERE games.metacritic_score != 0
)
SELECT *
FROM r
WHERE r.ranking <= 5;

TiFlash使用前

スクリーンショット 2024-08-06 10.22.08.png
処理時間は189ms

TiFlash使用後

スクリーンショット 2024-08-06 10.38.45.png
処理時間は281ms
うーん、遅くなった…
まぁ、データ量も多くはないししょうがないか?
game_genre:188,188レコード
games:68,223レコード

余談ですが①

alter table game_genre set tiflash replica 0;
alter table games set tiflash replica 0;

これでTiFlashをやめられます。

余談ですが②

TiKVとTiFlashの使い分けですが、SQL実行時にヒント句で与えられるみたい。

explain analyze
SELECT /*+ read_from_storage(tikv[game_genre],tiflash[games] */
       g.*
FROM game_genre gg
LEFT JOIN games g ON g.app_id = gg.app_id
WHERE gg.genre_id  = 9
ORDER BY g.estimated_owners DESC;

ちなみに上記SQL実行しましたが、tiflashが使われました。
エンジンの分離設定をする必要があるみたいですが、TiDB構成ファイルを触る必要があり、すぐにできなかったためここまでとします。

SQLでヒント句が与えられるのは良いですね。TiKvに影響を与えたくない状況は少なくないと思うので活用したいですね。

感想

将来は分析を考えつつ、今は業務アプリを作る状況って全然あると思うので、そんな時にTiDB良いですね。
もちろんMySQLのアプリを移行して、その後分析にも活用すると言うのもありですし。
Text2SQLも実装されていて新しさを感じました。
今後も期待!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?