当前位置:网站首页 > 数据科学与大数据 > 正文

sqlldr导入数据比较慢(sqlloader导入数据when)



shardingsphere在服务启动时会去加载表的元数据,导致启动缓慢,如果分表数量多,启动一次等待个上百秒都是可能的。可以添加扫描的线程的并发数量加快扫描速度

 

添加后再启动发现快了一点,效果不明显。

通过debug代码可以发现,慢的根源是ColumnMetaDataLoader#load这个方法,需要去查db信息,表多的话需要查询数量多,就耗时越高。分表的表元数据其实基本都是一样的,例如tabale_0到table_127,这128张表的元数据都是相同,其实只要查一次就够了。所以我们可以调整一下ColumnMetaDataLoader的逻辑,想办法让它获取分表元数据时只查询一次。

首先我们会想到使用aop去对原逻辑做切面调整,但是ColumnMetaDataLoader这个是不归spring管理的类,spring提供aop是无法对这个逻辑做处理的,这时可以通过javaAgent去修改字节码。我们用一个工具集成javaagent完成对字节码的修改。

maven引入依赖

 

然后添加代码对ColumnMetaDataLoader逻辑做调整

 

确保ShardingSphereBoostReCoder 这个类能被你的spring容器扫描到,然后启动服务可以发现启动速度提升了很多。首次启动还会把元数据保存到本地硬盘,第二次启动耗时更低。依赖引入那可以加上<scope>test</scope>,然后把这个类移动到test目录下,这样就不会影响到线上逻辑,你本地调试的时候启动也快了。

到此这篇sqlldr导入数据比较慢(sqlloader导入数据when)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 自动驾驶数据安全白皮书(自动驾驶数据中心)2025-03-24 07:00:06
  • msp432p401R单片机用什么型号的数据线(msp430单片机用什么语言编程)2025-03-24 07:00:06
  • 数据库语句增删改查(数据库常用命令增删改查)2025-03-24 07:00:06
  • 自动驾驶数据集结构(自动驾驶 数据集)2025-03-24 07:00:06
  • druid数据库连接池原理(数据库连接池druid工作原理)2025-03-24 07:00:06
  • vbf文件(数据库是一个dbf文件)2025-03-24 07:00:06
  • 自动驾驶数据存储(自动驾驶数据存储方法)2025-03-24 07:00:06
  • 数据中台实施方案(数据中台设计方案)2025-03-24 07:00:06
  • u盘启动盘制作制作后需要安装系统吗(u盘制作启动盘后可以存储数据吗)2025-03-24 07:00:06
  • 数据库课程设计图书管理系统(数据库课程设计图书管理系统代码)2025-03-24 07:00:06
  • 全屏图片