网站大量收购闲置独家精品文档,联系QQ:2885784924

mysql数据库性能以及多线程插入的初步研究.pptVIP

mysql数据库性能以及多线程插入的初步研究.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据库插入性能以及 多线程插入的初步研究 报告人:电网业务中心工程师 张凌飞 报告大纲 研究目的和背景 文献研究 研究范畴 使用工具和研究方法 MySQL与不同数据库插入性能之间的比较 MySQL数据库多线程插入性能研究 数据库插入字段数和性能之间的关系 未来研究方向 建议和互动 研究目的和背景 研究目的和背景 -众所周知,数据库是限制应用系统发挥其最大处理能力的瓶颈所在,比如一个数据库读写操作所耗费的总时间有相当大一部分是在数据持久层的执行; 例如河北配网数据处理项目上通过计时应用层读取并解析一条数据的时间大约3-5毫秒,但是花费在插入或者更新数据库的时间大约是大约20-30毫秒。实际执行一个全省数据的导入需要10分钟以上的时间。 -虽然河北这个项目不是一个多用户高并发的场景,但是在每次数据台账导入的时候要顺序读取解析,执行少则1-2万多则4-5万条数据的insert或者update操作。即便尝试了所有数据库级别的优化,除非切换到不支持事务的myISAM存储引擎使用insert into delayed…提高插入效率 -从这个意义上讲:可以理解为在程序导入数据的时候会发生很高的数据量插入或者更新的业务 文献研究 中科院物理研究所的同志为了满足中国散裂源项目的数据监测和分析任务,进行了C语言读写mySQL数据库服务在特定条件下事务处理能力研究,内容与本研究相似.研究包括查询速度的内容,但是这里只关注插入速度的研究部分内容 1.插入速度和线程之间关系:建立16个线程,但是都是串行每个线程定时插入600秒 2.插入速度和插入数据量的大小,建立16个线程,但是都是串行每个线程定时插入600秒 该研究使用了多达800个以上的数据库连接线程,在其my.in配置文件中max_connection设置为mySQL最大默认值16384; 每次提交50个作业,每个作业16个线程,这样的话一个作业每秒插入速度22k/50=440; 16个线程每秒 研究范畴 -首先比较一下同等条件下不同数据库之间的插入性能比较 在这个基础上我们推测在一个数据库上的其他条件下的插入性能可以反映到其他数据库上。 -其次专门研究目前使用最广泛的社区版数据库mySQL的插入性能问题,结果推广到其他数据库。 - 与有关文献做一个比较 使用工具和方法 -插入程序的开发是在myEclipse中实现的;数据库使用mySQL5.7 windows64位版本; 开发jdk=1.6.45; 数据库连接文件使用的稳定版的jdbc包,mySQL使用的必威体育精装版的mysql-connectort-5.1.40.jar; 数据库比较分析中使用了oracle11gR2, 达梦7数据库,mySQL分支开源项目mariaDB10稳定版和mySQL5.6 -无论哪种数据库都注意了使用批处理提交sql的编程方法,由于mysql默认是事务开启的因此每次执行一些sql就会提交commit,为了最大优化插入性能,在程序循环插入之前 setAutoCommit(false);并且循环插入之后执行commit(); -在单线程案例中根据测试插入量的不同,一般取插入量20%的sql提交一次commit 比如10000条插入的测试会在循环2000条的时候commit一次。 -Oracle数据库和达梦好像没有mysql这种要求,直接执行batch处理就可以 MySQL与不同数据库 插入性能之间的比较 Mysql: 1000/1.652=605 insert/s 测试存在的问题?执行时间太短,不是长循环, 理想测试是长时间循环插值然后去平均 MySQL数据库多线程插入性能研究 左图插入1000条数据40个线程需要15K毫秒左右,而在右图中实际需要不超过1400毫秒。这原因是左图是在家用VPN连接公司mysql数据库,所以延时部分主要来自网络的延时。 另外发现当数据量很小的=1000的时候,多线程并不会带来巨大的收益,除非是8线程或者4线程,而100线程反而还会低于单线程。考虑到系统运行在8核心电脑上,推测是线程数与核心数匹配问题 上述案例中当线程数超高跟40后,其实没测20;效率几乎没有提高。看似线程数与核心数呈现2n次方关系的时候效率提高最多,因此猜测如果机器从8核心升级16核心32线程甚至更高的硬件配置,也许才有可能从提高线程数获得更高收益。 数据库插入字段数和性能之间的关系 在同等条件下,增加多线程插入的单个表的字段数对于插入速度影响并不显著 每次测试的结果其实都不一样,是否应该长时间插入并且去平均值和误差 但是总体趋势是 单线程到多线程插入 随着字段数超过16, 数据插入效率会比较明显的下降。但是2线程的情况有所例外。 总体来看,虽然规律不规则,但是随着线程数提高,同样字段的表插入速度会有提高,这种特征在从2线程到4

文档评论(0)

我思故我在 + 关注
实名认证
文档贡献者

部分用户下载打不开,可能是因为word版本过低,用wps打开,然后另存为一个新的,就可以用word打开了

1亿VIP精品文档

相关文档