MySQL HeatWave 用户指南  / 第 6 章 HeatWave 快速入门  /  6.2 AirportDB 分析快速入门

6.2 AirportDB 分析快速入门

HeatWave airportdb 快速入门 将引导您使用 MySQL Shell Dump Load 实用程序将数据导入数据库系统,使用自动并行加载将数据加载到 HeatWave,以及运行查询。

描述了以下主题:

有关使用 airportdb示例数据库演示 HeatWave 的在线研讨会,请参阅 Turbocharge Business Insights with MySQL Database Service 和 HeatWave

先决条件

安装机场数据库

安装过程包括将 airportdb数据库下载到 Compute 实例,并使用 MySQL Shell Dump Loading 实用程序将数据从 Compute 实例导入到 MySQL DB 系统。有关此实用程序的信息,请参阅 转储加载实用程序

安装airportdb数据库:

  1. 下载airportdb示例数据库并解压缩。示例数据库以压缩的tar或 Zip 存档的airportdb形式提供以供下载 。下载大小约为 640 MB。

    Press CTRL+C to copy
    wget https://downloads.mysql.com/docs/airport-db.tar.gz tar xvzf airport-db.tar.gz

    或者

    Press CTRL+C to copy
    wget https://downloads.mysql.com/docs/airport-db.zip unzip airport-db.zip

    解压缩压缩的tar或 Zip 存档会生成一个名为 的目录 airport-db,其中包含数据文件。

  2. 启动 MySQL Shell 并连接到 MySQL 数据库系统端点。有关连接到数据库系统的其他信息,请参阅 使用 SSH 和 MySQL Shell 连接到 MySQL 数据库系统

    Press CTRL+C to copy
    mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  3. 使用 MySQL Shell Dump Loading Utility 将数据库加载airportdb到 MySQL DB 系统中 。

    Press CTRL+C to copy
    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中。

将 airportdb 加载到 HeatWave 中

从 MySQL 数据库系统加载airportdb到 HeatWave:

笔记

如果您在 AWS 上使用 MySQL HeatWave,您还可以从 MySQL HeatWave 控制台加载数据。请参阅 MySQL HeatWave on AWS 服务指南中的 管理 HeatWave 数据。

  1. 启动 MySQL Shell 并连接到 MySQL 数据库系统的端点。

    Press CTRL+C to copy
    mysqlsh Username@DBSystem_IP_Address_or_Host_Name
  2. 将 MySQL Shell 执行模式更改为 SQL 并运行以下自动并行加载命令以将 airportdb表加载到 HeatWave 中。

    Press CTRL+C to copy
    MySQL>JS> \sql MySQL>SQL> CALL sys.heatwave_load(JSON_ARRAY('airportdb'), NULL);

    有关 Auto Parallel Load 实用程序的信息,请参阅 第 2.2.3 节 “使用 Auto Parallel Load 加载数据”

运行 airportdb 查询

将 airportdb 示例数据库表加载到 HeatWave 集群后,符合条件的查询将自动卸载到 HeatWave 集群以进行加速处理。运行查询:

笔记

如果您在 AWS 上使用 MySQL HeatWave,您还可以从 MySQL HeatWave 控制台中的查询编辑器运行查询。请参阅 MySQL HeatWave on AWS 服务指南中的 运行查询。

  1. 启动 MySQL Shell 并连接到 MySQL 数据库系统的端点:

    Press CTRL+C to copy
    $> mysqlsh Username@DBSystem_IP_Address_or_Host_Name

    MySQL Shell 默认以 JavaScript 执行模式打开。

    Press CTRL+C to copy
    MySQL>JS>
  2. 将 MySQL Shell 执行模式更改为 SQL:

    Press CTRL+C to copy
    MySQL>JS> \sql
  3. 更改为airportdb数据库。

    Press CTRL+C to copy
    MySQL>SQL> USE airportdb; Default schema set to `airportdb`.Fetching table and column names from `airportdb` for auto-completion... Press ^C to stop.
  4. 在运行查询之前,使用它 EXPLAIN来验证查询是否可以卸载到 HeatWave 集群。例如:

    Press CTRL+C to copy
    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"

  5. 验证查询可以卸载后,运行查询并记下执行时间。

    Press CTRL+C to copy
    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)
  6. 要将 HeatWave 执行时间与 MySQL 数据库系统执行时间进行比较,请禁用该 use_secondary_engine 变量以查看在 MySQL 数据库系统上运行相同查询需要多长时间;例如:

    Press CTRL+C to copy
    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 查询

本主题提供了额外的 airportdb 查询,您可以运行这些查询来测试 HeatWave 集群。

  • 查询 1:票数 > $500.00,按价格分组

    Press CTRL+C to copy
    SELECT booking.price, count(*) FROM booking WHERE booking.price > 500 GROUP BY booking.price ORDER BY booking.price LIMIT 10;
  • 查询 2:按国家、按航空公司划分的乘客平均年龄

    Press CTRL+C to copy
    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:从美国机场出发的航空公司的大多数机票销售

    Press CTRL+C to copy
    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 表

airportdb可以使用以下语句从 HeatWave 卸载表:

笔记

如果您在 AWS 上使用 MySQL HeatWave,您还可以从 MySQL HeatWave 控制台卸载数据。请参阅 MySQL HeatWave on AWS 服务指南中的 管理 HeatWave 数据。

Press CTRL+C to copy
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;