sql >> Databáze >  >> RDS >> Mysql

Pochopení nové vlny tepla MySQL

Analýza dat je důležitá v každé společnosti, protože můžete vidět, co se stalo v minulosti, abyste mohli činit chytrá rozhodnutí nebo dokonce předvídat budoucí akce pomocí stávajících dat.

Analyzovat velké množství dat může být obtížné a ke zpracování zátěže OLTP a OLAP byste měli potřebovat více než jeden databázový stroj. V tomto blogu uvidíme, co je HeatWave a jak vám může pomoci s tímto úkolem.

Co je HeatWave?

HeatWave je nový integrovaný modul pro databázovou službu MySQL v cloudu. Je to distribuovaný, škálovatelný, sdílený-nic, in-memory, sloupcový procesor pro zpracování dotazů navržený pro rychlé provádění analytických dotazů. Podle oficiální dokumentace zrychluje výkon MySQL 400x pro analytické dotazy, škáluje se na tisíce jader a je 2,7x rychlejší při přibližně jedné třetině nákladů oproti přímým konkurentům. Databázová služba MySQL s HeatWave je jedinou službou pro spouštění úloh OLTP a OLAP přímo z databáze MySQL.

Jak HeatWave funguje

Cluster HeatWave zahrnuje uzel systému MySQL DB System a dva nebo více uzlů HeatWave. Uzel MySQL DB System má zásuvný modul HeatWave, který je zodpovědný za správu clusteru, načítání dat do clusteru HeatWave, plánování dotazů a vracení výsledků dotazů do systému MySQL DB System. Uzly HeatWave ukládají data do paměti a zpracovávají analytické dotazy. Každý uzel HeatWave obsahuje instanci HeatWave.

Počet požadovaných uzlů HeatWave závisí na velikosti vašich dat a míře komprese, které je dosaženo při načítání dat do clusteru HeatWave. Architekturu tohoto produktu můžeme vidět na následujícím obrázku:

Jak vidíte, uživatelé ke clusteru HeatWave nemají přímý přístup. Dotazy, které splňují určité předpoklady, jsou automaticky přesunuty z MySQL DB System do HeatWave clusteru pro urychlené zpracování a výsledky jsou vráceny do MySQL DB System uzlu a poté do MySQL klienta nebo aplikace, která dotaz zadala.

Jak jej používat

Chcete-li tuto funkci povolit, budete muset vstoupit na web Oracle Cloud Management, získat přístup ke stávajícímu systému MySQL DB (nebo vytvořit nový) a přidat klastr analýzy. Zde můžete určit typ clusteru a počet uzlů. Pomocí funkce Odhad počtu uzlů můžete zjistit potřebný počet na základě vaší pracovní zátěže.

Načítání dat do HeatWave clusteru vyžaduje přípravu tabulek v systému MySQL DB System a provádění operací načítání tabulek.

Příprava tabulek

Příprava tabulek zahrnuje úpravu definic tabulek tak, aby byly vyloučeny určité sloupce, definování kódování sloupců řetězců, přidání klíčů pro umístění dat a určení HeatWave (RAPID) jako sekundárního modulu pro tabulku, protože InnoDB je primární.

Chcete-li definovat RAPID jako sekundární stroj pro tabulku, zadejte volbu tabulky SECONDARY_ENGINE v příkazu CREATE TABLE nebo ALTER TABLE:

mysql> CREATE TABLE orders (id INT) SECONDARY_ENGINE = RAPID;
or
mysql> ALTER TABLE orders SECONDARY_ENGINE = RAPID;

Načítání dat

Načtení tabulky do HeatWave clusteru vyžaduje provedení operace ALTER TABLE s klíčovým slovem SECONDARY_LOAD.

mysql> ALTER TABLE orders SECONDARY_LOAD;

Když je tabulka načtena, data jsou horizontálně rozdělena a distribuována mezi HeatWave uzly. Po načtení tabulky se změny v datech tabulky v uzlu MySQL DB System automaticky přenesou do uzlů HeatWave.

Příklad

Pro tento příklad použijeme pořadí tabulek:

mysql> SHOW CREATE TABLE orders\G
*************************** 1. row ***************************
       Table: orders
Create Table: CREATE TABLE `orders` (
  `O_ORDERKEY` int NOT NULL,
  `O_CUSTKEY` int NOT NULL,
  `O_ORDERSTATUS` char(1) COLLATE utf8mb4_bin NOT NULL,
  `O_TOTALPRICE` decimal(15,2) NOT NULL,
  `O_ORDERDATE` date NOT NULL,
  `O_ORDERPRIORITY` char(15) COLLATE utf8mb4_bin NOT NULL,
  `O_CLERK` char(15) COLLATE utf8mb4_bin NOT NULL,
  `O_SHIPPRIORITY` int NOT NULL,
  `O_COMMENT` varchar(79) COLLATE utf8mb4_bin NOT NULL,
  PRIMARY KEY (`O_ORDERKEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin

Můžete vyloučit sloupce, které nechcete načítat do HeatWave:

mysql> ALTER TABLE orders MODIFY `O_COMMENT` varchar(79) NOT NULL NOT SECONDARY;

Nyní definujte RAPID jako SECONDARY_ENGINE pro tabulku:

mysql> ALTER TABLE orders SECONDARY_ENGINE RAPID;

Ujistěte se, že máte v definici tabulky přidán parametr SECONDARY_ENGINE:

ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin SECONDARY_ENGINE=RAPID

A nakonec načtěte tabulku do HeatWave:

mysql> ALTER TABLE orders SECONDARY_LOAD;

Můžete použít EXPLAIN ke kontrole, zda používá správný engine. Měli byste vidět něco takového:

Extra:Použití where; Použití dočasné; Použití řazení souborů; Použití sekundárního motoru RAPID

Na oficiálních stránkách MySQL můžete vidět srovnání mezi normálním spuštěním a použitím HeatWave:

Provedení HeatWave

mysql> SELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM orders 
       WHERE O_ORDERDATE >= DATE '1994-03-01' GROUP BY O_ORDERPRIORITY 
       ORDER BY O_ORDERPRIORITY;
+-----------------+-------------+
| O_ORDERPRIORITY | ORDER_COUNT |
+-----------------+-------------+
| 1-URGENT        |     2017573 |
| 2-HIGH          |     2015859 |
| 3-MEDIUM        |     2013174 |
| 4-NOT SPECIFIED |     2014476 |
| 5-LOW           |     2013674 |
+-----------------+-------------+
5 rows in set (0.04 sec)

Normální provedení

mysql> SELECT O_ORDERPRIORITY, COUNT(*) AS ORDER_COUNT FROM orders 
       WHERE O_ORDERDATE >= DATE '1994-03-01' GROUP BY O_ORDERPRIORITY 
       ORDER BY O_ORDERPRIORITY;
+-----------------+-------------+
| O_ORDERPRIORITY | ORDER_COUNT |
+-----------------+-------------+
| 1-URGENT        |     2017573 |
| 2-HIGH          |     2015859 |
| 3-MEDIUM        |     2013174 |
| 4-NOT SPECIFIED |     2014476 |
| 5-LOW           |     2013674 |
+-----------------+-------------+
5 rows in set (8.91 sec)

Jak vidíte, existuje důležitý rozdíl v čase dotazu, a to i v případě jednoduchého dotazu. Další informace naleznete v oficiální dokumentaci.

Závěr

Jednu databázi MySQL lze použít pro aplikace OLTP i Analytics. Je 100% kompatibilní s místními MySQL, takže můžete své úlohy OLTP ponechat na místě a přesunout své analytické úlohy na HeatWave beze změn ve vaší aplikaci, nebo ji dokonce použít přímo v Oracle Cloud ke zlepšení výkonu MySQL pro Analytics. účely.


  1. SQL Server 2016:Vytvoření databáze

  2. Migrace dat mezi různými DBMS

  3. Jak vytvářet a udržovat databáze MySQL v cPanel

  4. SQL Server Trigger:Pochopení a alternativy