自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Myloader導入更快嗎?并沒有......

數(shù)據(jù)庫 MySQL
在MySQL 8.0/GreatSQL 8.0.32中,采用myloader導入數(shù)據(jù)就不再是最優(yōu)方案了,推薦采用GreatSQL的并行l(wèi)oad data,或者MySQL Shell的util.loadDump/util.importTable導入,其本質也是采用并行的思路,導入效率更高,額外的binlog和內(nèi)存開銷也更小。

0. 結論先行

重要結論先說:導入大批量數(shù)據(jù)時,采用GreatSQL 8.0.32-24中新增并行l(wèi)oad data特性是最快的,關于該特性的描述詳見:Changes in GreatSQL 8.0.32-24。

1. 背景介紹

前幾天我用MySQL官網(wǎng)提供的airportdb庫中的weatherdata表做測試,結論是相比原生快了約5倍。

群里有小伙伴反駁說用myloader更香,于是就有了本次測試。

由于weatherdata表較小,表空間只有228MB,所以我改用sysbench表做測試,該表共600萬行數(shù)據(jù),表空間約1.5GB,其他信息如下:

greatsql> show create table myload\G
*************************** 1. row ***************************
       Table: myload
Create Table:CREATE TABLE `myload` (
  `id` int NOT NULL AUTO_INCREMENT,
  `k` int NOT NULL DEFAULT '0',
  `c` char(120) NOT NULL DEFAULT '',
  `pad` char(60) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`),
  KEY `k_2` (`k`)
) ENGINE=InnoDB AUTO_INCREMENT=6194244 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

greatsql> show table status like 'myload'\G
*************************** 1. row ***************************
           Name: myload
         Engine: InnoDB
        Version: 10
     Row_format: Dynamic
           Rows: 5930876
 Avg_row_length: 233
    Data_length: 1385168896
Max_data_length: 0
   Index_length: 153894912
      Data_free: 7340032
 Auto_increment: 6194244
    Create_time: 2023-07-08 09:25:02
    Update_time: 2023-07-08 09:25:33
     Check_time: NULL
      Collation: utf8mb4_0900_ai_ci
       Checksum: NULL
 Create_options:
        Comment:

2. 測試過程

本次測試基于GreatSQL 8.0.32-24版本,其他相關信息如下:

# myloader版本
$ myloader --version
myloader0.15.0-1, built against MySQL 5.7.42-46 with SSL support with GZIP

# MySQL Shell版本
 JS > shell.version
Ver 8.0.32 for Linux on x86_64 - for MySQL 8.0.32 (MySQL Community Server (GPL))

默認開啟binlog + 雙1 + redo log + doublewrite buffer:

|binlog_rows_query_log_events |ON|
| innodb_buffer_pool_size | 8589934592|innodb_doublewrite |ON|
|innodb_flush_log_at_trx_commit |1|
|innodb_redo_log_capacity |2147483648|
|sync_binlog |1|

3. 結果對比

下面是幾個不同導入方式的對比測試結果,每種方式我都測試至少3次,去除噪點數(shù)據(jù)后取平均值:

工具

耗時(秒)

binlog大小(MB)

mysqld內(nèi)存增長(MB)

原生load data

62.801741

1091

1536

并行l(wèi)oad data(chunk=4MB,并發(fā)16線程)

11.81

1091

1522

myloader(dump時chunk=64MB,load時并發(fā)16線程)

29.358

2246

1868

myloader(dump時chunk=64MB,load時并發(fā)16線程)+ 關binlog

21.426



myloader(默認 + 開binlog)

82.651

2246


myloader(默認 + 關binlog)

62.830



util.importTable(默認,chunk=64MB,并發(fā)8線程)

16.0034

1091

1662

從這個測試結果可以看到幾個對比關系:

  1. 原生load data最慢,因為是單線程的,它的耗時是并行l(wèi)oad data的5.32倍;
  2. 原生load data的耗時是多線程模式下myloader的2.14倍;
  3. 原生load data的耗時是多線程模式下util.importTable的3.92倍;
  4. 當myloader沒有開啟并行(mydumper備份時要先進行分配)的話,它的耗時是最久的,是并行l(wèi)oad data的7倍,是多線程模式下util.importTable的5.16倍;
  5. 當myloader未開啟binlog時(其默認行為,有"作弊"嫌疑),其耗時是并行l(wèi)oad data的1.81倍,是多線程模式下util.importTable的1.34倍;
  6. 最后,myloader導入后造成的binlog文件最大,內(nèi)存開銷也最大。

圖片圖片

綜上,在MySQL 8.0/GreatSQL 8.0.32中,采用myloader導入數(shù)據(jù)就不再是最優(yōu)方案了,推薦采用GreatSQL的并行l(wèi)oad data,或者MySQL Shell的util.loadDump/util.importTable導入,其本質也是采用并行的思路,導入效率更高,額外的binlog和內(nèi)存開銷也更小。

最后,補充說下,myloader導入時產(chǎn)生的binlog更多,是因為它的導入方式是反復執(zhí)行INSERT SQL,在 binlog_rows_query_log_events = ON 時,相比load data方式會產(chǎn)生更多binlog。

附錄

1. myloader多分片方式導出

設置導出時進行分片,每個分片(chunk)10MB

$ mydumper -F 10 -S /data/GreatSQL/mysql.sock -T sbtest.myload -o /tmp/myload

最后的(未壓縮)文件總大小為1.2GB。

2. outfile導出

greatsql> select * into outfile '/tmp/myload.csv' from myload;

很簡單,平平無奇,最后的(未壓縮)文件總大小為1.1GB。

3. util.dumpTables多分片方式導出 設置導出時進行分片,每個分片(chunk)64MB(默認值)

MySQL  localhost  JS > util.dumpTables("sbtest", ["myload"], "/tmp/myload", {threads:16, chunking:true, byt

責任編輯:武曉燕 來源: GreatSQL社區(qū)
相關推薦

2009-02-17 09:11:42

Unix時間錯誤

2011-09-23 09:42:25

2009-02-19 20:25:34

SunSolaris發(fā)展趨勢

2018-12-18 09:20:06

2020-11-04 10:33:19

數(shù)據(jù)

2022-07-11 12:37:15

安全運營網(wǎng)絡攻擊

2020-12-14 09:35:20

CentOSRockyLinux

2016-02-15 09:52:21

虛擬現(xiàn)實

2025-03-27 15:21:59

2013-05-06 09:19:36

云應用趨勢云服務云管理工具

2019-12-19 16:46:50

數(shù)據(jù)恢復軟件云計算技術

2009-03-24 14:16:14

LinuxWindows多核芯片

2016-06-03 10:32:53

2022-05-06 08:26:21

babel編譯器

2010-05-19 09:15:31

云計算

2013-01-06 13:45:14

2017-11-10 09:00:02

Linux桌面版市場占有率

2015-03-25 17:57:50

JavaJava糟糕

2018-09-26 17:28:15

KubernetesServerless云計算

2021-06-15 16:17:19

Commit報錯事務
點贊
收藏

51CTO技術棧公眾號