用于优化性能的批处理MySQL教程

用于优化性能的批处理MySQL教程
对于大数据量的一些系统,面向数据库的问题,不仅效率低,而且长时间的数据输入。特别喜欢报告系统,用于数据的时间进口每天可能只要几个小时或十几个小时。因此,它是优化数据库插入的性能很有意义。

在MySQL InnoDB多项性能测试后,一些方法可以提高插入效率发现参考

1。一个SQL语句插入多个数据。

常用的INSERT语句,例如:

插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(0,'userid_0 ','content_0 ',0);
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
值(1,'userid_1 ','content_1 ',1);
把它改为:

插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(0,'userid_0 ','content_0 ',0),(1,'userid_1 ','content_1 ',1);
修改后的插入操作可以提高程序的插入效率。为SQL执行效率的第二种最主要的原因是,合并后的原木材积(MySQL的binlog和InnoDB的事务日志)降低,并减少了日志磁盘的数据量和频率,从而提高了效率。合并的SQL语句,它还可以减少SQL语句解析的数量,降低网络传输的IO。

这里,我们提供了一些测试对比数据,它们分别将单个数据导入和转换成SQL语句,并分别导入100, 1和1万个数据记录。
2。插入过程在事务中执行。

将插入项修改为:

开始交易;
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(0,'userid_0 ','content_0 ',0);
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
值(1,'userid_1 ','content_1 ',1);

承诺;
三.数据按顺序插入。

数据以插入是指插入记录的主键,有序排列,例如,日期是记录的关键:

插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
值(1,'userid_1 ','content_1 ',1);
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(0,'userid_0 ','content_0 ',0);
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(2,'userid_2 ','content_2 ',2);
把它改为:

插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(0,'userid_0 ','content_0 ',0);
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
值(1,'userid_1 ','content_1 ',1);
插入` insert_table `(` DateTime `,` UID `,`内容`,`型`)
价值观(2,'userid_2 ','content_2 ',2);
当插入数据库,索引数据需要维护,和无序的记录会增加维护索引的成本。我们可以参考的B+树索引使用InnoDB,如果每次插入记录在索引后,定位效率指数是非常高的,和小指数调整;如果插入索引中的记录,B+树的分裂合并处理消耗更多的计算资源,和定位效率会插入一条记录指数下降,大量的数据会有频繁的磁盘操作。

以下结果与随机数据和连续数据的性能进行比较,分别记录为100, 1千、1万、10万和100万。
从测试结果来看,优化方法的性能得到了提高,但改进效果并不明显。

性能综合测试:

这为使用上述三种方法进行插入效率优化提供了一个测试。
从测试结果我们可以看到,数据融合+交易在小数据量的方法,性能的改善是明显的,大量的数据(超过1000万),其性能将急剧下降,这是因为数据量超过innodb_buffer容量,每个位置指数涉及更多的磁盘读写操作,性能下降很快。使用+商业+合并排序的数据数据数据量达到一千万以上的性能还是不错的,在大量的数据、有序数据的索引位置更方便,不需要频繁的磁盘读写操作,它可以保持高性能。

注意事项:uff1a

1、SQL语句受长度限制。在同一SQL中,它不能超过SQL长度限制。它可以通过max_allowed_packet配置修改,默认是1M,和8M是在测试的时候修改。

2。交易需要控制和交易规模太大,影响了execution.mysql效率有innodb_log_buffer_size配置项,将刷InnoDB数据到磁盘,然后效率会下降,所以最好的方法是提交事务的数据达到这个值之前。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部