记录我的一次MySQL操作Demo:


存储过程:


DROP PROCEDURE IF EXISTS my_insert;
CREATE PROCEDURE my_insert()
BEGIN
DECLARE n int DEFAULT 1;
loopname:LOOP
INSERT INTO user_info(id,name,age,gender,address,tel)VALUES(n,'lilis',16,2,'杭州下沙',18758);
SET n=n+1;
IF n=100000 THEN
LEAVE loopname;
END IF;
END LOOP loopname;
END;
CALL my_insert();

表结构:



完全插入花费时间:时间: 228.370s(3分多钟)平均每秒插入:438.6条记录。


电脑配置信息:内存8g,i3 3217u,固态硬盘(浦科特m6s 128g)。


我觉得这个插入速度太慢了,后来百度的时候注意到MySQL的配置文件中innodb_flush_log_at_trx_commit=2这个配置非常影响写入性能,默认为1,改成2之后同样的数据量写入就快多了,降到了

时间: 14.967s

关于:innodb_flush_log_at_trx_commit这个参数注释原话是这样的:

# If set to 1, InnoDB will flush (fsync) the transaction logs to the
# disk at each commit, which offers full ACID behavior. If you are
# willing to compromise this safety, and you are running small
# transactions, you may set this to 0 or 2 to reduce disk I/O to the
# logs. Value 0 means that the log is only written to the log file and
# the log file flushed to disk approximately once per second. Value 2
# means the log is written to the log file at each commit, but the log
# file is only flushed to disk approximately once per second.

翻译过来就是说设为1时:会在每个事务提交后会执行往磁盘写日志的操作。设为0或2可减少日志对磁盘IO的负担。0表示每秒往磁盘写一次日志,2表示每次事务都往内存提交日志,但每秒往磁盘仅写入一次。现在想想为什么之前插入这么慢,就是因为每个inset完成后都往磁盘写日志,导致占满了磁盘IO(我观察了磁盘IO,参数设为1的时候磁盘占用时间保持100%)。


数据库库优化有4层次:

1.sql语句及索引优化(性价比最高,最容易操作)

2.表结构优化(数据库设计层面)

3.数据库配置优化

4.硬件的升级

我遇到的这个问题就属于第3个层次。

MySQL插入10万数据时间(结论:最快14.967s,每秒插入6681条)的更多相关文章

  1. 【sqlserver】批量插入10万数据

    DECLARE @LN VARCHAR(300),@MN VARCHAR(200),@FN VARCHAR(200)DECLARE @LN_N INT,@MN_N INT,@FN_N INTSET @ ...

  2. php 导出excel 10万数据

    php导出excel 10万数据(此代码主要测试用) 在工作当中要对一些基本信息和其他信息导出 起初信息比较小无所谓.... 但当信息超出65535的时候 发现点问题了 超出了 而且 反应速度很慢 实 ...

  3. .net core Json字符串的序列化和反序列化通用类源码,并模拟了10万数据对比DataContractJsonSerializer和Newtonsoft性能

    我们在开发中Json传输数据日益普遍,有很多关于Json字符串的序列化和反序列化的文章大多都告诉你怎么用,但是却不会告诉你用什么更高效.因为有太多选择,人们往往会陷入选择难题. 相比.NET Fram ...

  4. leaflet如何加载10万数据

    作为一名GIS开发者,你工作中一定遇到过这种问题,根据业务设计,需要在地图上添加1万+条数据,数据或是点.或是线.或是面.但不管哪种,当你添加到5000条时,地图操作就会出现明显的卡顿.当你添加超过1 ...

  5. [开源]CSharpFlink(NET 5.0开发)分布式实时计算框架,PC机10万数据点秒级计算测试说明

    github地址:https://github.com/wxzz/CSharpFlinkgitee地址:https://gitee.com/wxzz/CSharpFlink  1         计算 ...

  6. 最短时间(几秒内)利用C#往SQLserver数据库一次性插入10万条数据

    用途说明: 公司要求做一个数据导入程序,要求将Excel数据,大批量的导入到数据库中,尽量少的访问数据库,高性能的对数据库进行存储.于是在网上进行查找,发现了一个比较好的解决方案,就是采用SqlBul ...

  7. MariaDB(MySql)使用储存过程和随机函数插入10万条数据

    ))default charset =utf8; #定义一个随机切割字符串的函数 delimiter // create function randStr() ) begin ) default 'A ...

  8. java 批量插入10万条数据

    for (int i = 0; i < 100000; i++) { dbHelper.insert("INSERT aaa(name) Values ('1')"); } ...

  9. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

随机推荐

  1. Jquery-全选和取消的一个坑

    在做一个商城的购物车的时候遇到了一个坑, 购物车一般都有全选按钮, 再次点击就会全部消除, 在网上查到的答案全部都是使用attr来做的, 无一例外都不能用, 之后才知道要使用jquery的prop和r ...

  2. zookeeper-3.4.5安装&3台机器安装之后 ./zkServer.sh status 之后会显示“Error contacting service. It is probably not running.”的解决办法

    安装文件上传工具:yum install lrzsz成功安装后有如下的提示:Complete![root@server01 apps]# yum install lrzszLoaded plugins ...

  3. 经验分享:极速化 CocoaPods

    Cocopods 本身是一个优秀的 iOS 开发的包管理工具,涵盖了 7k+ 的开源组件,包管理库是托管在 Github.由于众所周知的原因它的速度日渐缓慢,有时会频繁报如下错误: 1 2 3 4 $ ...

  4. jquery左右轮播

    <!--------html代码:-----------> <!DOCTYPE html><html><head><title>carous ...

  5. swift UITapGestureRecognizer获取点击事件点击的位置point

    func picTap(sender: UITapGestureRecognizer) { let point = sender.location(in: sender.view) } 其中获取的po ...

  6. vue指令v-for示例解析

    1.遍历数组 <div id="app"> <p v-for="item in items">my name is {{item}}&l ...

  7. 【性能测试工具】- Http_Load

    优点:参数少:缺点:url.txt文件要求较高,不如siege方便 http_load是ACME实验室开发的,这个工具以并发方式运行,用以测试web服务器的吞吐量与负载.它不同于其它压力测试工具的是, ...

  8. android学习SeekBar的使用

    SeekBar介绍听歌的时候,我们常常想快进或者快退到某一时间段,听歌的时候我们控制音量大小听歌,SeekBar可以通过滑块的位置来标示数值,而且拖动条允许用户拖动滑块来改变进度条的大小 SeekBa ...

  9. Linux 日常使用小记

    一.Oracle VirtualBox安装Linux7.0全屏设置 1. 点击菜单栏 设备 –> 分配光驱 –> 选择一个虚拟光盘,找到VirtualBox安装目录下的VBoxGuestA ...

  10. [mark] first shellcode

    好久没写博客了,今天终于搞出了第一个shellcode,以此mark一下. #include "stdafx.h" #include <Windows.h> #incl ...