## 模块 3：使用 TiFlash 加速复杂查询

### 第 1 步：执行分析型查询并查看执行计划

+ 连接到 TiDB 并运行分析型查询。

{% if TIDB_ENVIRONMENT == 'TiDB Cloud Starter' %}

  ```bash
  mysql \
   --comments -u '${LAB:SERVERLESS_CLUSTER_USERNAME}' -p'${LAB:SERVERLESS_CLUSTER_PASSWORD}' \
   -h ${LAB:SERVERLESS_CLUSTER_HOST} -P ${LAB:SERVERLESS_CLUSTER_PORT} \
   --ssl-mode=VERIFY_IDENTITY --ssl-ca=/etc/ssl/certs/ca-certificates.crt \
   -D ${LAB:SERVERLESS_CLUSTER_DATABASE_NAME}
  ```

{% elif TIDB_ENVIRONMENT == 'TiDB Cloud Essential' %}

  ```bash
  mysql \
   --comments -u ${SERVERLESS_CLUSTER_USERNAME} -p${SERVERLESS_CLUSTER_PASSWORD} \
   -h ${SERVERLESS_CLUSTER_HOST} -P ${SERVERLESS_CLUSTER_PORT} \
   --ssl-mode=VERIFY_IDENTITY --ssl-ca=/etc/ssl/certs/ca-certificates.crt \
   -D lab_demo_${LAB:LAB_INSTANCE_ID}
  ```

{% endif %}

  ```sql
  WITH index_companies AS (
     SELECT
         c.stock_symbol, c.short_name, c.exchange_symbol, ic.weight, c.market_cap AS market_cap, c.revenue_growth AS revenue_growth
     FROM companies c
     JOIN index_compositions ic ON c.stock_symbol = ic.stock_symbol
     WHERE index_symbol = 'SP500' AND sector = 'Energy'
  ), companies_latest_price AS (
     SELECT
         stock_symbol, DATE(last_day) AS last_change_day, last_close_price, last_2nd_close_price,
              last_close_price - last_2nd_close_price                          AS last_change,
   (last_close_price - last_2nd_close_price) / last_2nd_close_price AS last_change_percentage
     FROM (
       SELECT
         LAST_VALUE(stock_symbol) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS stock_symbol,
         LAST_VALUE(record_date) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS last_day,
         NTH_VALUE(close, 1) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_close_price,
         NTH_VALUE(close, 2) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_2nd_close_price,
         ROW_NUMBER() OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS row_num
       FROM stock_price_history sph
       WHERE
         record_date > DATE_SUB((SELECT MAX(record_date) FROM stock_price_history), INTERVAL 2 DAY)
         AND sph.stock_symbol IN (SELECT stock_symbol FROM index_companies ic)
     ) sub
     WHERE
         row_num = 2
  )
  SELECT
     ic.stock_symbol, ic.exchange_symbol, ic.short_name, ic.weight, ic.market_cap, ic.revenue_growth,
   clp.last_change, clp.last_change_day, clp.last_close_price, clp.last_2nd_close_price, clp.last_change_percentage
  FROM index_companies ic
  LEFT JOIN companies_latest_price clp ON ic.stock_symbol = clp.stock_symbol
  ORDER BY ic.weight DESC;
  ```

  ```output
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  | stock_symbol | exchange_symbol | short_name                      | weight                 | market_cap   | revenue_growth | last_change         | last_change_day | last_close_price     | last_2nd_close_price | last_change_percentage  |
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  | XOM          | NYQ             | 埃克森美孚公司                  |   0.013441937585551282 | 474511933440 |          0.689 |  1.2800064086914100 | 2023-01-10      | 111.3700027465820300 | 110.0899963378906200 |  0.01162690935843785832 |
  | CVX          | NYQ             | 雪佛龙公司                      |   0.009567226003564158 | 337731289088 |           0.81 | -0.8399963378906000 | 2023-01-10      | 175.1999969482422000 | 176.0399932861328000 | -0.00477162218772232275 |
  | COP          | NYQ             | 康菲石油公司                    |   0.004417814517419704 | 155952644096 |          1.237 |  0.1599960327148400 | 2023-01-10      | 118.2399978637695300 | 118.0800018310546900 |  0.00135497993084178221 |
  | SLB          | NYQ             | 斯伦贝谢                        |  0.0022377960040345308 |  78996119552 |          0.279 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | EOG          | NYQ             | EOG 资源公司                    |  0.0021024604924476343 |  74218659840 |          0.924 | -0.7600021362304600 | 2023-01-10      | 126.8499984741211000 | 127.6100006103515600 | -0.00595566282105957140 |
  | MPC          | NYQ             | 马拉松石油公司                  |   0.002050747487098508 |  72393146368 |          0.818 |  1.0999984741211000 | 2023-01-10      | 117.5999984741211000 | 116.5000000000000000 |  0.00944204698816394850 |
  | OXY          | NYQ             | 西方石油                        |   0.001695676548826279 |  59858837504 |          0.792 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | PXD          | NYQ             | 先锋自然资源公司                |  0.0016017013932190817 |  56541433856 |          0.641 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | VLO          | NYQ             | 瓦莱罗能源公司                  |  0.0015472850935959574 |  54620491776 |          0.593 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | HES          | NYQ             | 赫斯公司                        |  0.0012744122628788822 |  44987846656 |          0.776 |  1.6300048828125000 | 2023-01-10      | 145.2500000000000000 | 143.6199951171875000 |  0.01134942861878312162 |
  | PSX          | NYQ             | 菲利普斯 66                     |  0.0012589621320069535 |  44442443776 |          0.799 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | KMI          | NYQ             | 金德摩根公司                    |  0.0012062691273686955 |  42582335488 |          0.354 |  0.0400009155273440 | 2023-01-10      |  18.7800006866455080 |  18.7399997711181640 |  0.00213452059850037319 |
  | DVN          | NYQ             | 德文能源                        |  0.0012053375130788024 |  42549448704 |          0.789 | -0.2800025939941400 | 2023-01-10      |  62.8499984741210940 |  63.1300010681152340 | -0.00443533326875800678 |
  | WMB          | NYQ             | 威廉姆斯公司                    |  0.0011162172177908748 |  39403425792 |          0.091 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | HAL          | NYQ             | 哈里伯顿公司                    |  0.0010393744130051477 |  36690808832 |          0.388 |  0.0500030517578160 | 2023-01-10      |  40.9900016784668000 |  40.9399986267089840 |  0.00122137404580161222 |
  | OKE          | NYQ             | ONEOK 公司                      |  0.0008854096904464799 |  31255721984 |          0.769 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | BKR          | NMS             | 贝克休斯公司                    |  0.0008807471517968449 |  31091130368 |          0.054 | -0.0400009155273450 | 2023-01-10      |  30.8299999237060550 |  30.8700008392334000 | -0.00129578602008027511 |
  | FANG         | NMS             | 钻石能源公司                    |   0.000730020047064916 |  25770334208 |          0.565 |  0.2900085449218600 | 2023-01-10      | 142.2400054931640600 | 141.9499969482422000 |  0.00204303311839874783 |
  | MRO          | NYQ             | 马拉松石油公司                  |  0.0005965698099807201 |  21059426304 |          0.731 |  0.0399990081787110 | 2023-01-10      |  27.0499992370605470 |  27.0100002288818360 |  0.00148089625471161593 |
  | CTRA         | NYQ             | Coterra 能源公司                |  0.0005690298110137097 |  20087240704 |          5.204 | -0.3899993896484380 | 2023-01-10      |  24.6900005340576170 |  25.0799999237060550 | -0.01555021494556719473 |
  | TRGP         | NYQ             | Targa Resources                 |  0.0004842024080652878 |  17092760576 |          0.773 |                NULL | NULL            |                 NULL |                 NULL |                    NULL |
  | APA          | NMS             | APA 公司                        | 0.00039910236086756015 |  14088655872 |          0.374 |  0.5799980163574200 | 2023-01-10      |  43.8199996948242200 |  43.2400016784668000 |  0.01341345961709929139 |
  | EQT          | NYQ             | EQT 公司                        |  0.0003576031445812937 |  12623697920 |          1.092 | -0.6399993896484380 | 2023-01-10      |  33.4000015258789060 |  34.0400009155273440 | -0.01880139166966068805 |
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  23 行数据, 1 警告 (4.50 秒)
  ```

+ 下一个查询的输出会比较长，请先执行 `PAGER less -S`。想切回原显示可运行`NOPAGER`。

  ```sql
  PAGER less -S
  ```

+ 在 SQL 最前面加上 `EXPLAIN` 并检查复杂查询的执行计划。

> [!NOTE]
> 请关注 task 列。它展示了查询会由 `root` 和 `[cop]tikv` 执行（即 TiDB server 和 TiKV 行存）。

  ```sql
  EXPLAIN WITH index_companies AS (
       SELECT
           c.stock_symbol, c.short_name, c.exchange_symbol, ic.weight, c.market_cap AS market_cap, c.revenue_growth AS revenue_growth
       FROM companies c
       JOIN index_compositions ic ON c.stock_symbol = ic.stock_symbol
       WHERE index_symbol = 'SP500' AND sector = 'Energy'
   ), companies_latest_price AS (
       SELECT
           stock_symbol, DATE(last_day) AS last_change_day, last_close_price, last_2nd_close_price,
                last_close_price - last_2nd_close_price                          AS last_change,
     (last_close_price - last_2nd_close_price) / last_2nd_close_price AS last_change_percentage
       FROM (
         SELECT
           LAST_VALUE(stock_symbol) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS stock_symbol,
           LAST_VALUE(record_date) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS last_day,
           NTH_VALUE(close, 1) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_close_price,
           NTH_VALUE(close, 2) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_2nd_close_price,
           ROW_NUMBER() OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS row_num
         FROM stock_price_history sph
         WHERE
           record_date > DATE_SUB((SELECT MAX(record_date) FROM stock_price_history), INTERVAL 2 DAY)
           AND sph.stock_symbol IN (SELECT stock_symbol FROM index_companies ic)
       ) sub
       WHERE
           row_num = 2
   )
   SELECT
       ic.stock_symbol, ic.exchange_symbol, ic.short_name, ic.weight, ic.market_cap, ic.revenue_growth,
     clp.last_change, clp.last_change_day, clp.last_close_price, clp.last_2nd_close_price, clp.last_change_percentage
   FROM index_companies ic
   LEFT JOIN companies_latest_price clp ON ic.stock_symbol = clp.stock_symbol
   ORDER BY ic.weight DESC;
  ```

  ```output
  | id                 | estRows    | task      | access object    | operator info      |
  +--------------------+------------+-----------+------------------+--------------------+
  | ...（此处省略执行计划，中文环境下输出字段内容和原 SQL 含义一致）|
  29 行数据 (1.08 秒)
  ```

+ 按 `Q` 退出 `PAGER`。

  ```output
  mysql>
  ```

+ 关闭 `PAGER`。

  ```sql
  NOPAGER
  ```

  ```output
  PAGER set to stdout
  mysql>
  ```

### 第 2 步：TiFlash 同步设置

+ 将如下三张表设置为同步到 TiFlash：`stock_price_history`、`index_companies` 和 `companies`。

  ```sql
  ALTER TABLE companies SET TIFLASH REPLICA 2;
  ALTER TABLE index_compositions SET TIFLASH REPLICA 2;
  ALTER TABLE stock_price_history SET TIFLASH REPLICA 2;
  ```

  ```output
  ...
  查询 OK, 0 行受到影响, 1 警告 (0.20 秒)
  ```

+ 使用以下查询检查同步进度（同步完成需 `PROGRESS=1` 且 `AVAILABLE=1`）。

{% if TIDB_ENVIRONMENT == 'TiDB Cloud Starter' %}

  ```sql
  SELECT * FROM information_schema.tiflash_replica
  WHERE TABLE_SCHEMA = '${LAB:SERVERLESS_CLUSTER_DATABASE_NAME}';
  ```

{% elif TIDB_ENVIRONMENT == 'TiDB Cloud Essential' %}

  ```sql
  SELECT * FROM information_schema.tiflash_replica
  WHERE TABLE_SCHEMA = 'lab_demo_${LAB:LAB_INSTANCE_ID}';
  ```

{% endif %}

+ 同步中。

  ```output
  +----------------------+---------------------+----------+---------------+-----------------+-----------+----------+
  | TABLE_SCHEMA         | TABLE_NAME          | TABLE_ID | REPLICA_COUNT | LOCATION_LABELS | AVAILABLE | PROGRESS |
  +----------------------+---------------------+----------+---------------+-----------------+-----------+----------+
  | lab_demo_201_2370038 | companies           |      114 |             2 |                 |         0 |      0.5 |
  | lab_demo_201_2370038 | index_compositions  |      116 |             2 |                 |         0 |        0 |
  | lab_demo_201_2370038 | stock_price_history |      122 |             2 |                 |         0 |        0 |
  +----------------------+---------------------+----------+---------------+-----------------+-----------+----------+
  3 行数据 (0.05 秒)
  ```

+ 同步完成。

  ```output
  +----------------------+---------------------+----------+---------------+-----------------+-----------+----------+
  | TABLE_SCHEMA         | TABLE_NAME          | TABLE_ID | REPLICA_COUNT | LOCATION_LABELS | AVAILABLE | PROGRESS |
  +----------------------+---------------------+----------+---------------+-----------------+-----------+----------+
  | lab_demo_201_2370038 | companies           |      114 |             2 |                 |         1 |        1 |
  | lab_demo_201_2370038 | index_compositions  |      116 |             2 |                 |         1 |        1 |
  | lab_demo_201_2370038 | stock_price_history |      122 |             2 |                 |         1 |        1 |
  +----------------------+---------------------+----------+---------------+-----------------+-----------+----------+
  3 行数据 (0.05 秒)
  ```

### 第 3 步：再次运行分析型查询并检查执行计划

{% if TIDB_ENVIRONMENT == 'TiDB Cloud Starter' %}

+ 再次确认各表的行数。你会发现 `stock_price_history` 表行数远多于另外两张表。这样做也会触发 TiDB Cloud 动态为你的 Starter 集群分配 TiFlash 资源。对于 TiDB Cloud Dedicated、Essential、Premium，这不是使用列存的必须步骤。Starter 版会直到首次访问才分配 TiFlash。

  ```sql
  SELECT COUNT(*) FROM stock_price_history
  UNION ALL
  SELECT COUNT(*) FROM index_compositions
  UNION ALL
  SELECT COUNT(*) FROM companies;
  ```

  ```output
  +----------+
  | COUNT(*) |
  +----------+
  |      493 |
  |      493 |
  |  1157000 |
  +----------+
  3 行数据 (6.71 秒)
  ```

{% endif %}

+ 再次运行同样的复杂查询，观察查询时间和执行计划。

  ```sql
  WITH index_companies AS (
     SELECT
         c.stock_symbol, c.short_name, c.exchange_symbol, ic.weight, c.market_cap AS market_cap, c.revenue_growth AS revenue_growth
     FROM companies c
     JOIN index_compositions ic ON c.stock_symbol = ic.stock_symbol
     WHERE index_symbol = 'SP500' AND sector = 'Energy'
  ), companies_latest_price AS (
     SELECT
         stock_symbol, DATE(last_day) AS last_change_day, last_close_price, last_2nd_close_price,
              last_close_price - last_2nd_close_price                          AS last_change,
   (last_close_price - last_2nd_close_price) / last_2nd_close_price AS last_change_percentage
     FROM (
       SELECT
         LAST_VALUE(stock_symbol) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS stock_symbol,
         LAST_VALUE(record_date) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS last_day,
         NTH_VALUE(close, 1) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_close_price,
         NTH_VALUE(close, 2) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_2nd_close_price,
         ROW_NUMBER() OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS row_num
       FROM stock_price_history sph
       WHERE
         record_date > DATE_SUB((SELECT MAX(record_date) FROM stock_price_history), INTERVAL 2 DAY)
         AND sph.stock_symbol IN (SELECT stock_symbol FROM index_companies ic)
     ) sub
     WHERE
         row_num = 2
  )
  SELECT
     ic.stock_symbol, ic.exchange_symbol, ic.short_name, ic.weight, ic.market_cap, ic.revenue_growth,
   clp.last_change, clp.last_change_day, clp.last_close_price, clp.last_2nd_close_price, clp.last_change_percentage
  FROM index_companies ic
  LEFT JOIN companies_latest_price clp ON ic.stock_symbol = clp.stock_symbol
  ORDER BY ic.weight DESC;
  ```

+ 你会发现结果几乎是秒级返回。

  ```output
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  | stock_symbol | exchange_symbol | short_name                      | weight                 | market_cap   | revenue_growth | last_change         | last_change_day | last_close_price     | last_2nd_close_price | last_change_percentage  |
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  | XOM          | NYQ             | 埃克森美孚公司                  |   0.013441937585551282 | 474511933440 |          0.689 |  1.2800064086914100 | 2023-01-10      | 111.3700027465820300 | 110.0899963378906200 |  0.01162690935843785832 |
  ... （下同，内容同上） ...
  23 行数据 (0.62 秒)
  ```

+ 执行计划会对 `stock_price_history` 使用 `mpp[tiflash]`，其余两表因数据量较小优化器仍选择 `cop[tikv]`。

  ```sql
  PAGER less -S
  EXPLAIN WITH index_companies AS (
     SELECT
         c.stock_symbol, c.short_name, c.exchange_symbol, ic.weight, c.market_cap AS market_cap, c.revenue_growth AS revenue_growth
     FROM companies c
     JOIN index_compositions ic ON c.stock_symbol = ic.stock_symbol
     WHERE index_symbol = 'SP500' AND sector = 'Energy'
  ), companies_latest_price AS (
     SELECT
         stock_symbol, DATE(last_day) AS last_change_day, last_close_price, last_2nd_close_price,
              last_close_price - last_2nd_close_price                          AS last_change,
   (last_close_price - last_2nd_close_price) / last_2nd_close_price AS last_change_percentage
     FROM (
       SELECT
         LAST_VALUE(stock_symbol) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS stock_symbol,
         LAST_VALUE(record_date) OVER (PARTITION BY stock_symbol ORDER BY record_date) AS last_day,
         NTH_VALUE(close, 1) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_close_price,
         NTH_VALUE(close, 2) OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS last_2nd_close_price,
         ROW_NUMBER() OVER (PARTITION BY stock_symbol ORDER BY record_date DESC) AS row_num
       FROM stock_price_history sph
       WHERE
         record_date > DATE_SUB((SELECT MAX(record_date) FROM stock_price_history), INTERVAL 2 DAY)
         AND sph.stock_symbol IN (SELECT stock_symbol FROM index_companies ic)
     ) sub
     WHERE
         row_num = 2
  )
  SELECT
     ic.stock_symbol, ic.exchange_symbol, ic.short_name, ic.weight, ic.market_cap, ic.revenue_growth,
   clp.last_change, clp.last_change_day, clp.last_close_price, clp.last_2nd_close_price, clp.last_change_percentage
  FROM index_companies ic
  LEFT JOIN companies_latest_price clp ON ic.stock_symbol = clp.stock_symbol
  ORDER BY ic.weight DESC;
  ```

  ```output
  +-------------------------------------------------------+---------+--------------+---------------------------+---------------------+
  | id                                                    | estRows | task         | access object             | operator info       |
  +-------------------------------------------------------+---------+--------------+---------------------------+---------------------+
  ...（此处省略字段内容，含[mpp][tiflash]和[cop][tikv]执行节点说明）
  30 行数据 (0.52 秒)
  ```

+ 按 `Q` 退出 `PAGER`。

  ```output
  mysql>
  ```

### 第 4 步：通过运行脚本再次确认性能优化效果

+ 退出 mysql 客户端，切换至 [Terminal 1](ssh://monitor1-ssh#1)。

  ```sql
  EXIT
  ```

+ 运行脚本重新执行分析型 SQL，结果表明速度更快。

{% if TIDB_ENVIRONMENT == 'TiDB Cloud Starter' %}

  ```bash
  ~/.venv/bin/python test01.py
  ```

{% elif TIDB_ENVIRONMENT == 'TiDB Cloud Essential' %}

  ```bash
  ~/.venv/bin/python test01.py \
  $SERVERLESS_CLUSTER_USERNAME \
  $SERVERLESS_CLUSTER_PASSWORD \
  $SERVERLESS_CLUSTER_HOST \
  lab_demo_${LAB:LAB_INSTANCE_ID} \
  $SERVERLESS_CLUSTER_PORT
  ```

{% endif %}

  ```output
  ■■■查询 1：各行业总市值■■■
  查询开始时间: 02:25:59.895391
  查询结束时间: 02:25:59.910081
  +------------------------+------------------+
  |         sector         | total_market_cap |
  +------------------------+------------------+
  |      房地产           |   927820086272   |
  |      科技             |  7906855563776   |
  |   金融服务            |  4661122020864   |
  |     医疗保健          |  5122903213056   |
  |     公用事业          |  1023797270016   |
  |   必需消费品          |  2872367655424   |
  |   通信服务            |  3669841019392   |
  |    基础材料           |   889871172608   |
  |     能源              |  1788549832704   |
  |   可选消费品          |  3238477340160   |
  |    工业               |  3199253085184   |
  +------------------------+------------------+
  ==========================
  ■■■查询 2：能源行业市值排名■■■
  查询开始时间: 02:25:59.911859
  查询结束时间: 02:26:00.290869
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  | stock_symbol | exchange_symbol |      short_name           |   weight        |  market_cap  | revenue_growth |  last_change   | last_change_day |   last_close_price   | last_2nd_close_price |  last_change_percentage |
  +--------------+-----------------+---------------------------------+------------------------+--------------+----------------+---------------------+-----------------+----------------------+----------------------+-------------------------+
  （数据内容同前，中文环境下 short_name 为公司名中文或译文）
  ==========================
  MySQL 连接已关闭
  ```

### 第 5 步：前往 TiDB Cloud 控制台，开启你的云端之旅

{% if TIDB_ENVIRONMENT == 'TiDB Cloud Starter' %}

+ 现在你可以在 [这里](https://tidbcloud.com/clusters) 开启 TiDB Cloud 之旅。如果你在本实验中用了自己的免费集群，也能在该页面找到其名称为 ${LAB:SERVERLESS_CLUSTER_NAME}。

{% elif TIDB_ENVIRONMENT == 'TiDB Cloud Essential' %}

+ 现在可以在 [这里](https://tidbcloud.com/clusters) 开始 TiDB Cloud 之旅。实验完成后，你可在 TiDB Cloud 控制台的 `tidblabs-project` 项目中删除你创建的集群。

{% endif %}
