热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#MySqlBulkLoader向MySQL数据库中插入数据速度慢

目前的业务是处理千万级的数据,将里面的字段拆分出来,插入到新表中,新表中的数据可能会过亿,在前期使用MySqlBulkLoader插入的时候,速度非常快,插入十万条数据少于1s,但是后期插入速度就非常
目前的业务是处理千万级的数据,将里面的字段拆分出来,插入到新表中,新表中的数据可能会过亿,在前期使用MySqlBulkLoader插入的时候,速度非常快,插入十万条数据少于1s,但是后期插入速度就非常缓慢了,插入十万条数据可能需要十分钟。
看了一下MySQL后台执行的线程,没有其他资源占用,只有LOAD DATA LOCAL INFILE在执行。
比较奇怪的是,有时候速度能提上来,但是一到白天工作期间就会慢,有大神能解释一下吗?

17 个解决方案

#1


检查一下锁。

#2


表被一个线程锁定了,就是这个load data local file,我可以这样理解吗?因为更新的优先级较高,所以在插入的时候表会被锁,这个应该没有问题吧?

#3


引用 1 楼 ACMAIN_CHM 的回复:
检查一下锁。


表被一个线程锁定了,就是这个load data local file,我可以这样理解吗?因为更新的优先级较高,所以在插入的时候表会被锁,这个应该没有问题吧?

#4


【但是一到白天工作期间就会慢】,主机在做其他事情。

这个可能不是写法的问题了,硬件也有瓶颈。

#5


引用 4 楼 closurer 的回复:
【但是一到白天工作期间就会慢】,主机在做其他事情。

这个可能不是写法的问题了,硬件也有瓶颈。


这个主机是运行库,这么描述一下吧,数据库A中有表a1 a2,a1就是问题中描述的这个表,另外一个表a2也进行着同样的操作,这两个表问题一样,都是数据过亿,可能已经过十亿了,对相同的数据库,不同的表,进行这种load data local file操作,会彼此影响效率吗?

#6


查找下白天有哪些sql业务

#7


引用 6 楼 rucypli 的回复:
查找下白天有哪些sql业务


您看我五楼的回复,因为这个是运行库,所以这个主机上有好几个数据库,每个数据库基本都有增删改查操作,但是我说的这个问题中的数据库,只有两个表,每个表都是大数据量表,而且每个表都在插入数据,load data local file,而且每个表都只有这一个操作

#8


引用 6 楼 rucypli 的回复:
查找下白天有哪些sql业务


会与MySQL表过大,导致插入慢,有这个关系吗?大神

#9


引用 8 楼 bbboy12008 的回复:
Quote: 引用 6 楼 rucypli 的回复:

查找下白天有哪些sql业务


会与MySQL表过大,导致插入慢,有这个关系吗?大神


数据量大了,插入肯定会慢,因为一般的表都会有主键索引,就是按照一个字段进行排序,因为插入数据,不像是文件中的复制那么简单,是要按照顺序来插入,所以当数据量大了,找到要插入在什么位置这个过程就会耗费更长的时间。

数据库中的数据一般都是存储在B+树中,数据越多,树的层数越高,而数据是插入到树的叶子节点,数据量上亿一般的层级大概是6-7层左右,也就是说,要找到插入数据的位置,大概需要进行至少6-7次的随机IO,然后找到了,在把数据插入到叶子节点。

#10


数据库要维护索引,行数多索引的维护时间也会增加。

#11


引用 5 楼 bbboy12008 的回复:
Quote: 引用 4 楼 closurer 的回复:

【但是一到白天工作期间就会慢】,主机在做其他事情。

这个可能不是写法的问题了,硬件也有瓶颈。


这个主机是运行库,这么描述一下吧,数据库A中有表a1 a2,a1就是问题中描述的这个表,另外一个表a2也进行着同样的操作,这两个表问题一样,都是数据过亿,可能已经过十亿了,对相同的数据库,不同的表,进行这种load data local file操作,会彼此影响效率吗?


效率肯定会彼此影响的。

#12


引用 9 楼 yupeigu 的回复:
Quote: 引用 8 楼 bbboy12008 的回复:

Quote: 引用 6 楼 rucypli 的回复:

查找下白天有哪些sql业务


会与MySQL表过大,导致插入慢,有这个关系吗?大神


数据量大了,插入肯定会慢,因为一般的表都会有主键索引,就是按照一个字段进行排序,因为插入数据,不像是文件中的复制那么简单,是要按照顺序来插入,所以当数据量大了,找到要插入在什么位置这个过程就会耗费更长的时间。

数据库中的数据一般都是存储在B+树中,数据越多,树的层数越高,而数据是插入到树的叶子节点,数据量上亿一般的层级大概是6-7层左右,也就是说,要找到插入数据的位置,大概需要进行至少6-7次的随机IO,然后找到了,在把数据插入到叶子节点。


说的很详细,谢谢大神

#13


引用 8 楼 bbboy12008 的回复:
Quote: 引用 6 楼 rucypli 的回复:

查找下白天有哪些sql业务


会与MySQL表过大,导致插入慢,有这个关系吗?大神

影响不会太大

#14


引用 13 楼 rucypli 的回复:
Quote: 引用 8 楼 bbboy12008 的回复:

Quote: 引用 6 楼 rucypli 的回复:

查找下白天有哪些sql业务


会与MySQL表过大,导致插入慢,有这个关系吗?大神

影响不会太大


能具体解释下吗?大牛

#15


开一个新库,建个空表测试一下,如果也是白天慢,那么瓶颈在服务器
如果空表也不稳定,那么说明是和其他某些操作有冲突,互相影响
如果空表快而且稳定,那么再把源表 copy 一份测试,如果这时候快了,那么说明是原表的使用和你的load 有冲突,如果也慢,说明问题就出在源表上,数据量大+索引的影响前面已经有人分析过了,通常是这个问题,考虑分区分表

#16


引用 15 楼 zjcxc 的回复:
开一个新库,建个空表测试一下,如果也是白天慢,那么瓶颈在服务器
如果空表也不稳定,那么说明是和其他某些操作有冲突,互相影响
如果空表快而且稳定,那么再把源表 copy 一份测试,如果这时候快了,那么说明是原表的使用和你的load 有冲突,如果也慢,说明问题就出在源表上,数据量大+索引的影响前面已经有人分析过了,通常是这个问题,考虑分区分表


嗯,在同一个数据库中建空表测试了,速度也是慢,但是换了个数据库建空表测试,速度就快了,应该是数据量大+索引导致的,谢谢大神。

#17


分不多,谢谢各位大神。

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
author-avatar
不要破网名_329
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有