HeatWave airportdb 快速入门 将引导您使用 MySQL Shell Dump Load 实用程序将数据导入数据库系统,使用自动并行加载将数据加载到 HeatWave,以及运行查询。
描述了以下主题:
有关使用
airportdb
示例数据库演示 HeatWave 的在线研讨会,请参阅
Turbocharge Business Insights with MySQL Database Service 和 HeatWave。
-
一个可操作的 MySQL 数据库系统。
对于 OCI 上的 MySQL 数据库服务,请参阅 MySQL 数据库服务指南中的 创建数据库系统。
对于 AWS 上的 MySQL HeatWave,请参阅 MySQL HeatWave on AWS 服务指南中的 创建数据库系统。
对于 Oracle Database Service for Azure (ODSA) 中的 HeatWave,请参阅 配置 MySQL HeatWave。
-
一个可操作的 HeatWave 集群。
对于 OCI 上的 MySQL 数据库服务,请参阅 MySQL 数据库服务指南中的添加 HeatWave 集群。
对于 AWS 上的 MySQL HeatWave,请参阅 MySQL HeatWave on AWS 服务指南中的创建 HeatWave 集群。
对于 Oracle Database Service for Azure (ODSA) 中的 HeatWave,请参阅 供应 HeatWave 节点。
-
MySQL Shell 8.0.22 或更高版本。
对于 OCI 上的 MySQL 数据库服务,请参阅 使用 SSH 和 MySQL Shell 连接到 MySQL 数据库系统。
对于 AWS 上的 MySQL HeatWave,请参阅 MySQL HeatWave on AWS 服务指南中的连接 MySQL Shell。
安装过程包括将
airportdb
数据库下载到 Compute 实例,并使用 MySQL Shell Dump Loading 实用程序将数据从 Compute 实例导入到 MySQL DB 系统。有关此实用程序的信息,请参阅
转储加载实用程序。
安装airportdb
数据库:
-
下载
airportdb
示例数据库并解压缩。示例数据库以压缩的tar或 Zip 存档的airportdb
形式提供以供下载 。下载大小约为 640 MB。wget https://downloads.mysql.com/docs/airport-db.tar.gz tar xvzf airport-db.tar.gz
或者
wget https://downloads.mysql.com/docs/airport-db.zip unzip airport-db.zip
解压缩压缩的tar或 Zip 存档会生成一个名为 的目录
airport-db
,其中包含数据文件。 -
启动 MySQL Shell 并连接到 MySQL 数据库系统端点。有关连接到数据库系统的其他信息,请参阅 使用 SSH 和 MySQL Shell 连接到 MySQL 数据库系统。
mysqlsh Username@DBSystem_IP_Address_or_Host_Name
-
使用 MySQL Shell Dump Loading Utility 将数据库加载
airportdb
到 MySQL DB 系统中 。MySQL>JS> util.loadDump("airport-db", {threads: 16, deferTableIndexes: "all", ignoreVersion: true})
笔记该
deferTableIndexes: "all"
选项将创建二级索引推迟到加载表数据之后,这显着减少了加载时间。如果您打算airportdb
与不使用二级索引的 HeatWave 一起使用,则可以通过指定loadIndexes: "false"
选项而不是来避免创建二级索引deferTableIndexes: "all"
。有关 MySQL 转储加载选项的更多信息,请参阅 转储加载实用程序。
将数据导入 MySQL 数据库系统后,您可以将表加载到 HeatWave 中。有关说明,请参阅 将 airportdb 加载到 HeatWave中。
从 MySQL 数据库系统加载airportdb
到 HeatWave:
如果您在 AWS 上使用 MySQL HeatWave,您还可以从 MySQL HeatWave 控制台加载数据。请参阅 MySQL HeatWave on AWS 服务指南中的 管理 HeatWave 数据。
-
启动 MySQL Shell 并连接到 MySQL 数据库系统的端点。
mysqlsh Username@DBSystem_IP_Address_or_Host_Name
-
将 MySQL Shell 执行模式更改为 SQL 并运行以下自动并行加载命令以将
airportdb
表加载到 HeatWave 中。MySQL>JS> \sql MySQL>SQL> CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);
有关 Auto Parallel Load 实用程序的信息,请参阅 第 2.2.3 节 “使用 Auto Parallel Load 加载数据”。
将 airportdb 示例数据库表加载到 HeatWave 集群后,符合条件的查询将自动卸载到 HeatWave 集群以进行加速处理。运行查询:
如果您在 AWS 上使用 MySQL HeatWave,您还可以从 MySQL HeatWave 控制台中的查询编辑器运行查询。请参阅 MySQL HeatWave on AWS 服务指南中的 运行查询。
-
启动 MySQL Shell 并连接到 MySQL 数据库系统的端点:
$> mysqlsh Username@DBSystem_IP_Address_or_Host_Name
MySQL Shell 默认以 JavaScript 执行模式打开。
MySQL>JS>
-
将 MySQL Shell 执行模式更改为 SQL:
MySQL>JS> \sql
-
更改为
airportdb
数据库。MySQL>SQL> USE airportdb; Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.
-
在运行查询之前,使用它
EXPLAIN
来验证查询是否可以卸载到 HeatWave 集群。例如:MySQL>SQL> EXPLAIN SELECT booking.price, count(*) FROM booking WHERE booking.price > 500 GROUP BY booking.price ORDER BY booking.price LIMIT 10; *************************** 1. row *************************** id: 1 select_type: SIMPLE table: booking partitions: NULL type: ALL possible_keys: NULL key: NULL key_len: NULL ref: NULL rows: 54081693 filtered: 33.32999801635742 Extra: Using where; Using temporary; Using filesort; Using secondary engine RAPID
如果可以卸载查询, 则输出报告
Extra
中的列 。EXPLAIN
"Using secondary engine RAPID"
-
验证查询可以卸载后,运行查询并记下执行时间。
MySQL>SQL> SELECT booking.price, count(*) FROM booking WHERE booking.price > 500 GROUP BY booking.price ORDER BY booking.price LIMIT 10; +--------+----------+ | price | count(*) | +--------+----------+ | 500.01 | 860 | | 500.02 | 1207 | | 500.03 | 1135 | | 500.04 | 1010 | | 500.05 | 1016 | | 500.06 | 1039 | | 500.07 | 1002 | | 500.08 | 1095 | | 500.09 | 1117 | | 500.10 | 1106 | +--------+----------+ 10 rows in set (0.0537 sec)
-
要将 HeatWave 执行时间与 MySQL 数据库系统执行时间进行比较,请禁用该
use_secondary_engine
变量以查看在 MySQL 数据库系统上运行相同查询需要多长时间;例如:MySQL>SQL> SET SESSION use_secondary_engine=OFF; MySQL>SQL> SELECT booking.price, count(*) FROM booking WHERE booking.price > 500 GROUP BY booking.price ORDER BY booking.price LIMIT 10; +--------+----------+ | price | count(*) | +--------+----------+ | 500.01 | 860 | | 500.02 | 1207 | | 500.03 | 1135 | | 500.04 | 1010 | | 500.05 | 1016 | | 500.06 | 1039 | | 500.07 | 1002 | | 500.08 | 1095 | | 500.09 | 1117 | | 500.10 | 1106 | +--------+----------+ 10 rows in set (9.3859 sec)
对于airportdb
您可以运行的其他示例数据库查询,请参阅
其他 airportdb 查询。有关运行查询的更多信息,请参阅
第 2.3 节,“运行查询”。
本主题提供了额外的 airportdb 查询,您可以运行这些查询来测试 HeatWave 集群。
-
查询 1:票数 > $500.00,按价格分组
SELECT booking.price, count(*) FROM booking WHERE booking.price > 500 GROUP BY booking.price ORDER BY booking.price LIMIT 10;
-
查询 2:按国家、按航空公司划分的乘客平均年龄
SELECT airline.airlinename, AVG(datediff(departure,birthdate)/365.25) as avg_age, count(*) as nb_people FROM booking, flight, airline, passengerdetails WHERE booking.flight_id=flight.flight_id AND airline.airline_id=flight.airline_id AND booking.passenger_id=passengerdetails.passenger_id AND country IN ("SWITZERLAND", "FRANCE", "ITALY") GROUP BY airline.airlinename ORDER BY airline.airlinename, avg_age LIMIT 10;
-
查询 3:从美国机场出发的航空公司的大多数机票销售
SELECT airline.airlinename, SUM(booking.price) as price_tickets, count(*) as nb_tickets FROM booking, flight, airline, airport_geo WHERE booking.flight_id=flight.flight_id AND airline.airline_id=flight.airline_id AND flight.from=airport_geo.airport_id AND airport_geo.country = "UNITED STATES" GROUP BY airline.airlinename ORDER BY nb_tickets desc, airline.airlinename LIMIT 10;
airportdb
可以使用以下语句从 HeatWave 卸载表:
如果您在 AWS 上使用 MySQL HeatWave,您还可以从 MySQL HeatWave 控制台卸载数据。请参阅 MySQL HeatWave on AWS 服务指南中的 管理 HeatWave 数据。
USE airportdb;
ALTER TABLE booking SECONDARY_UNLOAD;
ALTER TABLE flight SECONDARY_UNLOAD;
ALTER TABLE flight_log SECONDARY_UNLOAD;
ALTER TABLE airport SECONDARY_UNLOAD;
ALTER TABLE airport_reachable SECONDARY_UNLOAD;
ALTER TABLE airport_geo SECONDARY_UNLOAD;
ALTER TABLE airline SECONDARY_UNLOAD;
ALTER TABLE flightschedule SECONDARY_UNLOAD;
ALTER TABLE airplane SECONDARY_UNLOAD;
ALTER TABLE airplane_type SECONDARY_UNLOAD;
ALTER TABLE employee SECONDARY_UNLOAD;
ALTER TABLE passenger SECONDARY_UNLOAD;
ALTER TABLE passengerdetails SECONDARY_UNLOAD;
ALTER TABLE weatherdata SECONDARY_UNLOAD;