GreatSQL 并行Load Data加快数据导入

如何使用MCP2518FD外部CAN FD控制器实现速速CAN通信 1、SPI时序MCP2518FD外部CAN FD控制器具有小尺寸和SPI接口,可实现轻松连接。可将CAN FD通道轻松添加到缺少CAN FD外设或没有所需CAN FD通道的微控制器上。MCP2518FD支持经典格式 (CAN 2.0B) 和CAN灵活数据速率 (CAN FD) 格式中的CAN帧格式,符合ISO11898-1:2015标准。框图:本文实验板MCU:CAN FD控制器:MCP2518FDCAN FD收发器:ATA6560开发环境:想了解开发板更详细信息,请点击。 阅读详情

GreatSQL 并行Load Data加快数据导入

数据库信息

数据库版本:GreatSQL 8.0.32-25

Clickhouse表需要导入到 GreatSQL 中,表数据量庞大所以选用导出CSV的方式。

测试数据复现操作

load data

MySQL load data 语句能快速将一个文本文件的内容导入到对应的数据库表中(一般文本的一行对应表的一条记录)。 数据库应用程序开发中,涉及大批量数据需要插入时,使用 load data 语句的效率比一般的 insert 语句的高很多 可以看成select … into outfile语句的反操作,select … into outfile将数据库表中的数据导出保存到一个文件中。

load data 语法

LOAD DATA
    [LOW_PRIORITY | CONCURRENT] [LOCAL]
    INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var
        [, col_name_or_user_var] ...)]
    [SET col_name={expr | DEFAULT}
        [, col_name={expr | DEFAULT}] ...]

GreatSQL开启load data并行的方法

#并行load data默认关闭,需要手动开启
 show variables like '%gdb_parallel_load%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| gdb_parallel_load            | OFF     |
| gdb_parallel_load_chunk_size | 4194304 |
| gdb_parallel_load_workers    | 6       |
+------------------------------+---------+
3 rows in set (0.03 sec)
方法一:设置session变量

连接数据库,执行set session gdb_parallel_load=on 如需调整文件块大小或线程数,执行 SET SESSION gdb_parallel_load_chunk_size=65536 或 SET SESSION gdb_parallel_load_workers=16。 使用原load data语句执行导入。

方法二:load语句增加hint
LOAD /*+ SET_VAR(gdb_parallel_load=ON) SET_VAR(gdb_parallel_load_chunk_size=65536) SET_VAR(gdb_parallel_load_workers=16) */ DATA INFILE '$MYSQLTEST_VARDIR/parallel_load_outfile.txt' INTO TABLE t1;
  • gdb_parallel_load 是否开启并行
  • gdb_parallel_load_chunk_size 文件块大小
  • gdb_parallel_load_workers 开启多少个线程同时导入

开启gdb_parallel_load=ON。默认配置是gdb_parallel_load_chunk_size=4194304,gdb_parallel_load_workers=6

测试数据创建

#Clickhouse制造测试数据
#建表并随机生成1000000行数据插入
CREATE TABLE test
ENGINE = MergeTree
ORDER BY user_id AS
SELECT
    number,
    concat('user_', toString(number)) AS user_id,
    concat('email_', toString(number), '@example.com') AS email,
    rand() AS random_value
FROM numbers(1, 1000000); 
Query id: a707f30c-180f-4453-bc18-b8e86ee46059
Ok.
0 rows in set. Elapsed: 0.575 sec. Processed 1.00 million rows, 8.00 MB (1.74 million rows/s., 13.92 MB/s.)
Peak memory usage: 157.29 MiB.
#查看表数据库和大小
SELECT
    table AS `表名`,
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`
FROM system.parts
WHERE database IN ('mytest')
GROUP BY table
Query id: c107871c-d58d-41ff-9bb9-603ab5ad57c9
┌─表名─┬──总行数─┬─原始大小──┬─压缩大小──┬─压缩率─┐
│ test │ 1000000 │ 46.52 MiB │ 16.29 MiB │     35 │
└──────┴─────────┴───────────┴───────────┴────────┘
1 row in set. Elapsed: 0.010 sec. 

SELECT count(*) FROM test
Query id: 0e49726f-75d2-402f-a83d-1c1534489b51
┌─count()─┐
│ 1000000 │
└─────────┘
1 row in set. Elapsed: 0.004 sec. 

创建GreatSQL库对应库表结构

greatsql> CREATE TABLE `mytest1`.`test` (  
    `number`  BIGINT PRIMARY KEY, 
    `user_id` VARCHAR(255),  
    `email` VARCHAR(255),  
    `random_value`  INT  
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

导出导入语句样例

Clickhouse导出
{ck_cmd} -q 'SELECT * FROM table FORMAT CSV #{ck_cmd}为clickhouse-client的位置
GreatSQL导入
{gdb_cmd} -e "LOAD  /*+ SET_VAR(gdb_parallel_load=ON) SET_VAR(gdb_parallel_load_chunk_size=65536) SET_VAR(gdb_parallel_load_workers=16) */ DATA LOCAL INFILE 'table.csv' INTO TABLE {new_table} fields terminated by ','"
#{gdb_cmd}为greatsql客户端的位置

不同情况下,是否开启并发耗时对比

未开启并发

单表数据量表个数总数据量迁移CK表总大小并行用时(s)
一百万1一百万46.52 MiBoff21
一千万1一千万465.2 MiBoff188
一百万10一千万465.2 MiBoff211
一百万20两千万930.4MiBoff413

开启并发

单表数据量表个数总数据量迁移CK表总大小并行行程数用时(s)
一百万1一百万46.52 MiB1610
一千万1一千万465.2 MiB16120
一百万10一千万465.2 MiB1697
一百万20两千万930.4MiB16180

结论

从测试结果看,开启16并行线程,可以加快导入速度30%~50%,导入数据量越大,表数量越多,或者的优化效益越高。

提示:开启并发请注意服务器资源的使用。

Enjoy GreatSQL :)

关于 GreatSQL

GreatSQL是适用于金融级应用的国内自主开源数据库,具备高性能、高可靠、高易用性、高安全等多个核心特性,可以作为MySQL或Percona Server的可选替换,用于线上生产环境,且完全免费并兼容MySQL或Percona Server。

相关链接: GreatSQL社区 Gitee GitHub Bilibili

GreatSQL社区:

image

社区有奖建议反馈: https://greatsql.cn/thread-54-1-1.html

社区博客有奖征稿详情: https://greatsql.cn/thread-100-1-1.html

(对文章有疑问或者有独到见解都可以去社区官网提出或分享哦~)

技术交流群:

微信&QQ群:

QQ群:533341697

微信群:添加GreatSQL社区助手(微信号:wanlidbc )好友,待社区助手拉您进群。

作物生长模型Oryza V3实战2:下载、安装与使用 摘要:ORYZA 现在的应用范围已从单一水稻作物模拟扩展到多个水稻作物模拟。我在csdn站内也上传了“作物生长模型oryza v3大全(含所有参数模板和4个校准程序1个分析工具)”,可以说是全网最全的吧。网上搜索一般下载的v3只有一个a3主程序,不适合作全面与深入的研究,本版本从国外下载回来,一开始少了一个“SoilHydrau.exe”文件,说是有病毒被隔离了,后经历各种技术手段,并向国际水道研究所发送邮件,才得以补全所有的参数化及校准程序、分析工具,来之不易,有缘人得之。 阅读详情

相关推荐

【题解-洛谷】B3644 【模板】拓扑排序 / 家谱树

有个人的家族很大,辈分关系很混乱,请你帮整理一下这种关系。给出每个人的后代的信息。输出一个序列,使得每个人的后辈都比那个人后列出。输出一个序列,使得每个人的后辈都比那个人后列出。如果有多种不同的序列,输出任意一种即可。),表示家族的人数。

写代码的犄角旮瘩 1065

load data(sql)

一般对于数据库表的插入操作,我们都会写程序执行插入sql,插入的数据少还可以,如果数据多了。执行效率上可能就不太理想了。load data语句用于高速地从一个文本文件中读取数据,装载到一个表中,相比于前者效率会高很多。 参考http://hunan.iteye.com/blog/752606https://dev.mysql.com/doc/refman/5.6/en/loa...

weixin_30763455的博客 890

一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文)

学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。

Tongzhou_Li的博客 2645

MySQL- 'load data infile'语句

基本语法: load data [low_priority] [local] infile 'file_name txt' [replace | ignore] into table tbl_name [fields [terminated by't'] [OPTIONALLY] enclosed by ''] [escaped by'\' ]] [lines...

weixin_33975951的博客 1450

强化学习环境Gym库的介绍

Gym是一个用于进行强化学习实验的开源库,它提供了一个仿真环境,内置了多种仿真游戏,例如出租车游戏、悬崖游戏等,不同的游戏所用的网格、规则、奖励(reward)都不一样,适合为强化学习做测试。(1) 多种环境:Gym库内置了上百种实验环境,包括算法环境、简单文本环境、经典控制环境、Atari游戏环境、MuJoCo环境和机械控制环境等。(2) Gym提供多种环境供我们使用,这里以一个简单的CartPole-v0为例,首先导入gym库,然后创建一个CartPole-v0环境,通过调用gym.make方法实现。

ahah12345678的博客 2148

面试复习题--RN面试

考察点:热更新方案的深度理解,选型能力,实战落地经验。答题思路主流热更新方案对比。

hqiangtai的博客 726

mysql load语句_MySQL的SQL语句 - 数据操作语句(9)- LOAD DATA 语句(1)

LOAD DATA 语句1. LOAD DATA2. [LOW_PRIORITY | CONCURRENT] [LOCAL]3. INFILE 'file_name'4. [REPLACE | IGNORE]5. INTO TABLE tbl_name6. [PARTITION (partition_name [, partition_name] ...)]...

weixin_39992788的博客 747

ThingsBoard教程(一):ThingBoard介绍及安装

ThingsBoard介绍 最近看了很多开源的物联网的项目,其中有一个让我印象很深,那就是Thingsboard 下面我就给大家介绍一下这个项目,并指导大家如何在本地安装一个Thingsboard来体验它。 首先引用官网的项目介绍就是 一个开源的用于数据收集,处理,可视化和设备管理的开源物联网平台。 它通过行业标准的物联网协议(MQTT,CoAP和HTTP)实现设备连接,并支持云和本地部署。ThingsBoard结合了可伸缩性,容错性和性能,因此您永远不会丢失数据。 用它开源收集链接设备,收集设备的数据,

知无涯 2万+

sqlload导入大量数据 步骤详解

一、加载txt文本  1.在D盘建立sqlldr的控制文件,111.ctl 内容如下  LOAD DATA  INFILE 'd:\111.txt'  INTO TABLE SALGRADE_TEST  TRUNCATE  FIELDS TERMINATED BY ','  (GRADE,LOSAL,HISAL)  2.在D盘建立sqlldr的数据文

ribuluoywk的专栏 9670

用C#+Avalonia写跨平台串口工具:Windows/macOS/Linux通吃,还能解析Modbus+画实时曲线

不管是串口还是蓝牙,核心操作都是“打开连接、发数据、收数据、关连接”,先定义一个// 通信设备接口:统一串口/蓝牙的操作// 连接状态变化事件(UI层订阅)// 接收数据事件(收到数据后触发)// 通信配置(不同设备配置不同,用泛型)// 通信设备接口:统一串口/蓝牙的操作 public interface ICommDevice : IDisposable {// 连接状态变化事件(UI层订阅) event Action < bool > OnConnectionChanged;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 997

【QT开发教程】使用Qt进行NFC编程

近场通信(NFC,Near Field Communication)技术广泛应用于现代设备中,例如智能手机、支付终端和门禁系统。Qt提供了一套完整的NFC模块,使开发者可以轻松地在应用程序中实现NFC功能。本文将介绍如何在Qt中进行NFC编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 1469

mysql的load data_【MySQL】load data语句详解(一)

作者 罗小波沃趣科技高级MySQL数据库工程师load data语句详解背景数据库版本:MySQL 5.7.18服务器信息:本地到处导入在10.10.30.241上演示,local远程导入在10.10.30.250上演示数据库参数配置:*双一,secure_file_priv='',log-bin,binlog_format=row,隔离级别RC,sql_mode='ONLY_FULL_GROU...

weixin_39884492的博客 6623

059、RealBasicVSR 实战:真实场景视频超分的退化建模与优化技巧

本文分享了RealBasicVSR在真实场景视频超分中的实战经验。针对传统方法假设理想化下采样导致的性能瓶颈,重点阐述了三个关键技术点:1)通过可学习退化编码器建模复杂未知退化过程,避免手动设计退化参数的局限;2)采用双向传播和DCN对齐增强时序一致性;3)组合多种损失函数并优化训练策略(如余弦退火学习率、随机退化增强)。作者结合项目实践指出了显存管理、训练时长、评估指标等常见问题,并给出实用建议:优先验证数据退化复杂度,重视数据预处理,合理调整超参数。文章强调真实场景视频超分的核心在于让模型自适应未知退化

ai技术增长的博客 180

从MySQL平滑迁移到GreatSQL:5步完成无缝替换的完整指南

对于正在使用 MySQL 的团队来说,数据库迁移最怕的就是"伤筋动骨":语法不兼容、存储过程报错、应用大面积返工。GreatSQL 作为一款开源免费数据库,以 **100% 兼容 MySQL 语法** 著称,可在普通硬件上满足金融级应用场景,具备高可用、高性能、高兼容、高安全四大特性,是 MySQL 或 Percona Server for MySQL 的理想可选替换。本指南用 5 个步骤带你完成

gitblog_00146的博客 411

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

GreatSQL 深度解析:金融级开源数据库全攻略

GreatSQL 是国内开源数据库生态中的一颗明珠。价值说明高可用不再是痛点MGR 深度优化 + greatdb_ha VIP 自动漂移,搭建企业级高可用集群门槛大幅降低HTAP 一体化Rapid + Turbo 双引擎,让同一套数据库同时支撑交易和分析,无需额外维护 OLAP 系统Oracle 迁移利器广泛的 Oracle 语法兼容,让存量 Oracle 应用向开源迁移有了可行路径安全合规开箱即用国密 SM4、审计、脱敏、备份加密,满足金融、政务等行业的合规要求零迁移成本。

qyq88888的专栏 788

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数据迁移丨借助 AI 从 PostgreSQL 到 GreatSQL

相对 MySQL 及 Percona Server For MySQL 的性能表现更稳定优异,支持 Rapid 引擎、事务无锁化、并行LOAD DATA、异步删除大表、线程池、非阻塞式DDL、NUMA 亲和调度优化 等特性,在 TPC-C 测试中相对 MySQL 性能提升超过 30%,在 TPC-H 测试中的性能表现是 MySQL 的十几倍甚至上百倍。了解数据库直接交互的应用程序、服务、脚本等,分析这些依赖关系,有助于制定迁移计划,和减少对业务的影响。语句的形式导出数据,而不是默认的自定义格式。

GreatSQL2021的博客 1088

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

GreatSQL5.7 与 8.0 对 DATE 非法值处理方式不同

MySQL 8.0 与 5.7 在 DATE 非法值处理上差异显著,本文不仅对比两者表现,还深入探讨成因,为从业者提供实操建议。

GreatSQL2021的博客 1103

LOAD DATA中包含NULL导致主从报错结局

*GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。1.背景概述目前需要搭建一个从库,由于单表数据量较大,时间比较有限,考虑到导入导出的时间,并且GreatSQL支持并行load data的功能,能够加速数据的导入,因此决定使用 select into outfile 和 load data 的方式进行数据的迁移;在数据导入完成后进行数据同步,从库发生报错 1032 找...

老叶茶馆 360

数据迁移丨如何从 PostgreSQL 到 GreatSQL

运用AI加持转换表结构,从PostgreSQL到GreatSQL的数据迁移~

GreatSQL2021的博客 922

为什么选择GreatSQL?一文看懂它与MySQL、Percona的本质区别

**GreatSQL** 是一款开源免费的金融级数据库,可在普通硬件上满足高并发、高可靠的应用场景,并且**100%兼容MySQL语法**,可作为 MySQL 或 Percona Server for MySQL 的理想替换。很多新手在面对"GreatSQL、MySQL、Percona到底选谁"时常常纠结:它们同根同源,区别究竟在哪里?本文用一篇文章,从血缘关系、核心特性、性能表现、安全能力四个维

gitblog_01165的博客 450

GreatSQL入门完全指南:开源免费金融级数据库的五大核心特性一网打尽

对于正在寻找 MySQL 替代方案的开发者来说,**GreatSQL** 是一款不容错过的**开源免费数据库**。它可在普通硬件上满足**金融级数据库**场景,凭借高可用、高性能、高兼容、高安全等特性,成为 MySQL 与 Percona Server for MySQL 的理想可选替换。这篇 **GreatSQL 入门指南**,将带你一次看懂它的五大核心特性、安装方法与上手要点,帮助你快速评估它

gitblog_00059的博客 867

5.7 与 8.0 对相同文件的 LOAD DATA 语句结果不同

1.BUG原因MySQL8.0重构定长数据导入出现BUG.同一个数据库会话,多次执行命令,则第n次执行的字符集使用的是n-1次的字符集,当文件的字符集存在不同,例如先后处理GB18030、UTF8字符集的文件就会数据乱码。此问题MySQL官方已证实为BUG(编号115824)2.BUG触发条件触发条件:需同时满足以下三个条件才会触发此bug。1)LOAD DATA2)在同一个连接中,多次执行LOAD DATA命令,且先后处理的文件字符集存在不同(例如GB18030和UTF8)。

GreatSQL2021的博客 704

借助AI将PostgreSQL迁移到GreatSQL(文末可免费领红包封面)

* GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。本文将介绍如何从 PostgreSQL 到 GreatSQL 的数据迁移,并运用 AI 协助迁移更加方便。迁移的方式有很多,例如:pg_dump:导出SQL文件,修改后导入 GreatSQL 数据库。COPY:导出txt文本文件,导入 GreatSQL 数据库。pg2mysql:从 PostgreSQL 迁移到 MyS...

老叶茶馆 244

GreatSQL 8.0.32-25来了

新版本发布会视频回顾版本信息发布时间:2023年12月28日版本号:8.0.32-25, Revision db07cc5cb73下载链接:https://gitee.com/GreatSQL/GreatSQL/releases/tag/GreatSQL-8.0.32-25用户手册:GreatSQL 8.0.32-25 User Manual https://greatsql.cn/docs/80...

老叶茶馆 569

GreatSQL从库报错13146:字符集不一致问题处理

表中相关信息,可以看到contact列、tel列的字符集都为utf8mb4,排序规则为默认的 utf8mb4_0900_ai_ci;这段描述可以解释为什么在创建表时,如果没有明确指定列的字符集,则会使用该表或数据库的默认字符集。这意味着,如果为VARCHAR类型的列没有指定字符集,它将继承表或数据库层面定义的字符集。的方式进行数据恢复后配置同步,从库发生报错13146数据类型转换失败,导致同步异常;表的字符集两边不一致,主库为utf8mb3,从库为utf8mb4,那么所属列的字符集是否一致呢?

GreatSQL2021的博客 589
上一篇: Percona Toolkit 神器全攻略(系统类)
下一篇: 单条记录大小增长倍数和ibd文件大小的增长倍数不成正比
GreatSQL社区
博客等级 码龄5年 1210粉丝 390原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值