混合型在线事务与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 功能
参考 02-部署本地测试集群 完成快速部署
tiup playground --tag v7.5.0 --host 192.168.1.1
使用以下命令安装数据生成工具:
tiup install bench
使用以下命令生成数据:
tiup bench tpch --sf=1 prepare
此过程耗时较长(10多分钟),生成完后。会在test查看相关表及数据
当命令行输出 Finished 时,表示数据生成完毕。
运行SQL 查看生成的数据:
SELECT CONCAT(table_schema,'.',table_name) AS 'Table Name', table_rows AS 'Number of Rows',
CONCAT(ROUND(data_length/(1024*1024*1024),4),'G') AS 'Data Size',
CONCAT(ROUND(index_length/(1024*1024*1024),4),'G') AS 'Index Size',
CONCAT(ROUND((data_length+index_length)/(1024*1024*1024),4),'G') AS'Total'
FROM information_schema.TABLES WHERE table_schema LIKE 'test';
从输出中可以看到,一共生成了八张表,最大的一张表数据量有 600 万行(由于数据是工具随机生成,所以实际的数据生成量以 SQL 实际查询到的值为准)。
这是一个商业订购系统的数据库。其中,
test.nation 表是国家信息、test.region 表是地区信息、test.part 表是零件信息、
test.supplier 表是供货商信息、test.partsupp 表是供货商的零件信息、
test.customer 表是消费者信息、test.orders 表是订单信息、test.lineitem 表是在线商品的信息。
执行以下 SQL 语句 TiDB 的表现:
SELECT l_orderkey,SUM( l_extendedprice * (1 - l_discount)) AS revenue,o_orderdate,o_shippriority
FROM customer,orders, lineitem
WHERE c_mktsegment = 'BUILDING'
AND c_custkey = o_custkey
AND l_orderkey = o_orderkey
AND o_orderdate < DATE '1996-01-01'
AND l_shipdate > DATE '1996-02-01'
GROUP BY l_orderkey, o_orderdate, o_shippriority
ORDER BY revenue DESC, o_orderdate
limit 10;
用于给出在指定日期之前尚未运送的订单中收入最高订单的优先权和潜在的收入。
潜在的收入被定义为 l_extendedprice * (1-l_discount) 的和。订单按照收入的降序列出。
TiFlash 部署完成后并不会自动同步 TiKV 数据,
在 MySQL 客户端向 TiDB 发送以下 DDL 命令指定需要同步到 TiFlash 的表。
指定后,TiDB 将创建对应的 TiFlash 副本。
ALTER TABLE test.customer SET TIFLASH REPLICA 1;
ALTER TABLE test.orders SET TIFLASH REPLICA 1;
ALTER TABLE test.lineitem SET TIFLASH REPLICA 1;
如需查询 TiFlash 表的同步状态,请使用以下 SQL 语句:
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = 'test' and TABLE_NAME = 'customer';
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = 'test' and TABLE_NAME = 'orders';
SELECT * FROM information_schema.tiflash_replica WHERE TABLE_SCHEMA = 'test' and TABLE_NAME = 'lineitem';
以上查询结果中:
再次执行第 3 步中的 SQL 语句
对于创建了 TiFlash 副本的表,TiDB 优化器会自动根据代价估算选择是否使用 TiFlash 副本。
如需查看实际是否选择了 TiFlash 副本,可以使用 desc 或 explain analyze 语句,例如:
explain analyze SELECT
l_orderkey,
SUM(
l_extendedprice * (1 - l_discount)
) AS revenue,
o_orderdate,
o_shippriority
FROM
customer,
orders,
lineitem
WHERE
c_mktsegment = 'BUILDING'
AND c_custkey = o_custkey
AND l_orderkey = o_orderkey
AND o_orderdate < DATE '1996-01-01'
AND l_shipdate > DATE '1996-02-01'
GROUP BY
l_orderkey,
o_orderdate,
o_shippriority
ORDER BY
revenue DESC,
o_orderdate
limit 10;
如果结果中出现 ExchangeSender 和 ExchangeReceiver 算子,表明 MPP 已生效。
此外,你也可以指定整个查询的各个计算部分都只使用 TiFlash 引擎,详情请参阅使用 TiDB 读取 TiFlash。
使用后效率