mysql insert优化_MySql的insert语句的性能优化方案

news/2024/7/8 6:09:18

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

下面是数据库方面调优的一个小例子,你也完全可以通过掌握基础知识,完成简单的sql语句级别的性能调优。很专注自动化测试,性能测试,安全性测试,移动端的自动化测试的人员培养。

MySql批量插入:

1. 一条SQL语句插入多条数据。

2. 在事务中进行插入处理。

3. 数据有序插入。(根据索引顺序插入)

原理:

1. SQL语句有长度限制,在进行数据合并在同一SQL中务必不能超过SQL长度限制,通过max_allowed_packet配置修改,默认是1M,测试时修改为8M。

2. 事务需要控制大小,事务太大可能会影响执行的效率。MySQL有innodb_log_buffer_size配置项,超过这个值会把innodb的数据刷到磁盘中,效率会有所下降。所以比较好的做法是,在数据达到这个这个值前进行事务提交。

1. 一条SQL语句插入多条数据INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);改成:INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1); 2. 在事务中进行插入处理。START TRANSACTION;INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);...COMMIT; 3. 数据有序插入INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('2', 'userid_2', 'content_2',2); 改成:INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('0', 'userid_0', 'content_0', 0);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('1', 'userid_1', 'content_1', 1);INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES ('2', 'userid_2', 'content_2',2); 在性能测试的工作中发生瓶颈的80%是数据库,数据库的80%性能问题集中在sql语句上。所以学好sql语句是很重要的,poptest的测试开发工程师培训中很注重数据库方面的实践,为性能测试中的性能调优打好基础。


http://www.niftyadmin.cn/n/2745917.html

相关文章

Android4.4 及以下TextView,Button等控件使用矢量图报错

2019独角兽企业重金招聘Python工程师标准>>> 1 问题描述 最近项目开发中,图标资源我尽量使用了矢量图,然而配置了基本的兼容设置,程序在低版本中运行还是出现了问题。 xml布局文件中,在TextView中使用矢量图&#xff0…

tomcat怎么运行java_如何在tomcat启动的时候运行一个Java类

设置个Listener就好了,在web.xml中指定描述。web.xml其实就是tomcat启动的时候会读取的一个描述文件,比如访问服务器的时候首页等都可以在里面指定,有相应的tag。这里有解释:http://blog.chinaunix.net/uid-20399471-id-1687965.h…

038:自定义过滤器实战

自定义时间计算过滤器: 有时候经常会在朋友圈、微博中可以看到一条信息发表的时间,并不是具体的时间,而是距离现在多久。比如 刚刚 , 1分钟前 等。这个功能 DTL 是没有内置这样的过滤器的,因此我们可以自定义一个这样的…

【Linux】进程信号之信号的产生

进程信号 一 一、信号入门1、信号的一些特性2、信号的处理方式信号捕捉初识 3、Linux下的信号 二、信号的产生1、通过终端按键产生信号2、调用系统函数向进程发信号a、kill函数b、raise函数c、abort函数 3. 由软件条件产生信号4、硬件异常产生信号 结语 一、信号入门 什么是信号…

python axis client_Python Matplotlib.axis.Axis.get_majorticklocs()用法及代码示例

Matplotlib是Python中的一个库,它是数字的-NumPy库的数学扩展。它是Python中令人惊叹的可视化库,用于数组的2D图,并用于与更广泛的SciPy堆栈配合使用。matplotlib.axis.Axis.get_majorticklocs()功能matplotlib库的轴模块中的Axis.get_majort…

jsp页面报错,报红叉 javax.servlet.http.HttpServlet was not found

完整错误信息: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOTLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESSFOR A PARTICULAR PURPOSE…

SQL学习笔记 初识SQL

SQL 是用于访问和处理数据库的标准的计算机语言。 SQL(结构化查询语言, 使我们有能力访问数据库, 是一种 ANSI 的标准计算机语言, ) 可分为六个部分:数据查询语言(DQL)、数据操作语言…

python中confusion matrix_python confusion matrix 混淆矩阵

示例:程序摘自【4】。from sklearn.metrics import confusion_matriximport matplotlib.pyplot as pltimport numpy as npdef plot_confusion_matrix(cm, labels, titleConfusion Matrix):plt.imshow(cm, interpolationnearest, cmapBlues)plt.title(title)plt.colo…