- 浏览: 498518 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (502)
- Java (70)
- Linux (10)
- 数据库 (38)
- 网络 (10)
- WEB (13)
- JSP (4)
- 互联网 (71)
- JavaScript (30)
- Spring MVC (19)
- HTML (13)
- CSS (3)
- AngularJS (18)
- Redis (5)
- Bootstrap CSS (1)
- ZooKeeper (4)
- kafka (6)
- 服务器缓存 (4)
- Storm (1)
- MongoDB (9)
- Spring boot (16)
- log4j (2)
- maven (3)
- nginx (5)
- Tomcat (2)
- Eclipse (4)
- Swagger (2)
- Netty (5)
- Dubbo (1)
- Docker (7)
- Hadoop (12)
- OAuth (1)
- webSocket (4)
- 服务器性能 (7)
- Session共享 (1)
- tieye修改 (1)
- 工作 (1)
- 有用的语录 (0)
- https (2)
- common (5)
- 产品开发管理 (1)
- CDN 工作原理 (1)
- APNS、GCM (1)
- 架构图 (3)
- 功能实现分析 (1)
- JMX (1)
- 服务器相关操作命令 (1)
- img02 (0)
- 服务器环境搭建 (9)
- goodMenuBook (1)
- CEInstantPot (0)
- 有用数据 (1)
- 百度地图WEB API (2)
- 正则表达式 (1)
- 样式例子 (2)
- staticRecipePressureCooker.zip (1)
- jCanvas (1)
- 网站攻击方法原理 (1)
- 架构设计 (3)
- 物联网相关 (3)
- 研发管理 (7)
- 技术需求点 (1)
- 计划 (1)
- spring cloud (11)
- 服务器开发的一些实用工具和方法 (1)
- 每天学到的技术点 (4)
- Guava (1)
- ERP 技术注意要点 (2)
- 微信小程序 (1)
- FineRepor (1)
- 收藏夹 (1)
- temp (5)
- 服务架构 (4)
- 任职资格方案 (0)
- osno_test (1)
- jquery相关 (3)
- mybatis (4)
- ueditor (1)
- VueJS (7)
- python (10)
- Spring EL (1)
- shiro (1)
- 前端开发原理与使用 (7)
- YARN (1)
- Spark (1)
- Hbase (2)
- Pig (2)
- 机器学习 (30)
- matplotlib (1)
- OpenCV (17)
- Hystrix (1)
- 公司 (1)
- miniui (4)
- 前端功能实现 (3)
- 前端插件 (1)
- 钉钉开发 (2)
- Jenkins (1)
- elasticSearch使用 (2)
- 技术规范 (4)
- 技术实现原理 (0)
最新评论
mysql提高insert into 插入速度的方法
innodb_flush_log_at_trx_commit
就是说设为1时:会在每个事务提交后会执行往磁盘写日志的操作。设为0或2可减少日志对磁盘IO的负担。0表示每秒往磁盘写一次日志,2表示每次事务都往内存提交日志,但每秒往磁盘仅写入一次。现在想想为什么之前插入这么慢,就是因为每个inset完成后都往磁盘写日志,导致占满了磁盘IO(我观察了磁盘IO,参数设为1的时候磁盘占用时间保持100%)
插入速度只有20-30 条/秒,后来查资料后,将MySQL的1个参数:innodb_flush_log_at_trx_commit,1改为了0(修改方法,可以直接修改my.ini(windows)/my.cnf(linux)中的对应参数,似乎用命令直接设置没有效果),插入速度就提升到了3000+每S,
更新的速度会比插入的速度快很多。本地测试发现插入40-50/s,更新在200-250/s
mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log%';
临时改:set global innodb_flush_log_at_trx_commit=2;重启数据库后失效
加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M
本地测试结果:
innodb_flush_log_at_trx_commit=0时,20个线程,20的连接池,平均5000/s. 2500~7500.
innodb_flush_log_at_trx_commit=1时,20个线程,20的连接池,平均420/s. 250~740.
innodb_flush_log_at_trx_commit=2时,20个线程,20的连接池,平均2700/s. 2000~3500.
本地测试结果(SSD):
innodb_flush_log_at_trx_commit=0时,20个线程,20的连接池,平均7000/s. 5000~8000.
innodb_flush_log_at_trx_commit=1时,20个线程,20的连接池,平均5000/s. 4000-6000.
innodb_flush_log_at_trx_commit=2时,20个线程,20的连接池,平均4000/s. 2000-4500.
要提高写入速度可以使用批量写入的方式进行提高:
一个客户端进行测试:
INSERT test (id,name,value,sex,createDate)VALUES(UUID(),'xingxingxingxing','huangyongxinghuangyongxing',71,NOW());
1条插入:48条/s
10条插入:400条/s
20条插入:700条/s
40条插入:1350条/s
120条插入:3500条/s
200条插入:5500条/s
240条插入:7000条/s
480条插入:11000条/s
960条插入:15000条/s
在系统中可以使用队列的方式先保存下来,另一个线程进行获取并批量写入
https://www.cnblogs.com/snailmanlilin/p/7017137.html(MySQL插入10万数据时间(结论:最快14.967s,每秒插入6681条))
[url]https://blog.csdn.net/hwhua1986/article/details/53501882 [/url](insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决)
https://blog.csdn.net/codepen/article/details/52160715(有关mysql的innodb_flush_log_at_trx_commit参数)
https://blog.csdn.net/thundermeng/article/details/50448614(innodb_flush_log_at_trx_commit和sync_binlog参数详解)
innodb_flush_log_at_trx_commit
就是说设为1时:会在每个事务提交后会执行往磁盘写日志的操作。设为0或2可减少日志对磁盘IO的负担。0表示每秒往磁盘写一次日志,2表示每次事务都往内存提交日志,但每秒往磁盘仅写入一次。现在想想为什么之前插入这么慢,就是因为每个inset完成后都往磁盘写日志,导致占满了磁盘IO(我观察了磁盘IO,参数设为1的时候磁盘占用时间保持100%)
插入速度只有20-30 条/秒,后来查资料后,将MySQL的1个参数:innodb_flush_log_at_trx_commit,1改为了0(修改方法,可以直接修改my.ini(windows)/my.cnf(linux)中的对应参数,似乎用命令直接设置没有效果),插入速度就提升到了3000+每S,
更新的速度会比插入的速度快很多。本地测试发现插入40-50/s,更新在200-250/s
mysql> SHOW GLOBAL VARIABLES LIKE 'innodb_flush_log%';
临时改:set global innodb_flush_log_at_trx_commit=2;重启数据库后失效
加大mysql配置中的 bulk_insert_buffer_size,这个参数默认为8M
本地测试结果:
innodb_flush_log_at_trx_commit=0时,20个线程,20的连接池,平均5000/s. 2500~7500.
innodb_flush_log_at_trx_commit=1时,20个线程,20的连接池,平均420/s. 250~740.
innodb_flush_log_at_trx_commit=2时,20个线程,20的连接池,平均2700/s. 2000~3500.
本地测试结果(SSD):
innodb_flush_log_at_trx_commit=0时,20个线程,20的连接池,平均7000/s. 5000~8000.
innodb_flush_log_at_trx_commit=1时,20个线程,20的连接池,平均5000/s. 4000-6000.
innodb_flush_log_at_trx_commit=2时,20个线程,20的连接池,平均4000/s. 2000-4500.
要提高写入速度可以使用批量写入的方式进行提高:
一个客户端进行测试:
INSERT test (id,name,value,sex,createDate)VALUES(UUID(),'xingxingxingxing','huangyongxinghuangyongxing',71,NOW());
1条插入:48条/s
10条插入:400条/s
20条插入:700条/s
40条插入:1350条/s
120条插入:3500条/s
200条插入:5500条/s
240条插入:7000条/s
480条插入:11000条/s
960条插入:15000条/s
在系统中可以使用队列的方式先保存下来,另一个线程进行获取并批量写入
https://www.cnblogs.com/snailmanlilin/p/7017137.html(MySQL插入10万数据时间(结论:最快14.967s,每秒插入6681条))
[url]https://blog.csdn.net/hwhua1986/article/details/53501882 [/url](insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决)
https://blog.csdn.net/codepen/article/details/52160715(有关mysql的innodb_flush_log_at_trx_commit参数)
https://blog.csdn.net/thundermeng/article/details/50448614(innodb_flush_log_at_trx_commit和sync_binlog参数详解)
发表评论
-
SQL常用语句
2022-07-21 19:09 215delete from cacherefresh where ... -
ES数据同步方案
2022-06-24 10:57 2318//============================= ... -
选举算法
2022-06-17 08:48 434选举算法 常用的选举 ... -
elasticSearch使用
2022-04-27 08:42 421ElasticSearch 基于Apache Lucene构建 ... -
IDEA 快捷键
2022-03-02 16:55 249大小写转换快捷键 ctr+shift+u IDEA ... -
SQL存储过程例子和有用的SQL
2022-02-19 09:20 205delete from cacherefresh where ... -
zookeeper dubbo 安装
2021-12-04 19:27 321docker-machine ssh default d ... -
将博客搬至CSDN
2021-11-18 19:57 194将博客搬至CSDN -
docker mysql 主从安装
2021-11-10 16:55 240docker run -d -p 13306:3306 --n ... -
rocketmq安装部署.txt
2021-11-07 19:10 219docker search rocketmq docke ... -
百度人脸识别
2021-05-21 16:11 365package com.gaojinsoft.htwy.y20 ... -
springBoot tomcat配置参数说明
2021-05-12 09:13 3027#最大连接数 server.tomcat.max-connec ... -
技术选型
2021-01-29 17:34 2971.移动端组件vux,vant,vant好点,文档好的,基于v ... -
SQL优化对比与总结
2021-01-09 14:44 38119000000 b表 SELECT * from b w ... -
方便开发调试和问题跟踪
2021-01-01 10:17 2501.外网最好可以连接数据库 2.关键信息可以在接口返回信息, ... -
执行存储过程测试
2020-12-30 16:47 388--执行存储过程创建 if (exists (select * ... -
Jenkins脚本
2020-03-12 17:55 446#!/bin/bash -ilx echo "开始 ... -
base64与file 相互转换
2019-10-23 18:19 782base64与file 相互转换 import org. ... -
钉钉开发
2019-09-17 20:16 436钉钉开发 开发者帐号 1357047443 x***310* ... -
安卓模拟器使用
2019-07-03 23:13 4逍遥pc版的安卓模拟器 http://www.xyaz.cn/ ...
相关推荐
MySQL作为一种广泛使用的数据库管理系统,提供了多种用于数据复制的方法,其中`SELECT INTO`和`INSERT INTO SELECT`是两种非常实用的数据复制手段。本文将详细介绍这两种语法的具体用法及其应用场景。 #### 二、...
总结来说,`INSERT INTO` 和 `REPLACE INTO` 的主要区别在于处理冲突的方式:`INSERT INTO` 遇到冲突时会失败,而 `REPLACE INTO` 则会删除冲突的旧行再插入新行。在处理需要确保唯一性的数据时,`REPLACE INTO` 是...
本文将详细分析`INSERT INTO`的使用方法,并结合PHP如何处理这些插入操作。 首先,`INSERT INTO`语句的基本格式如下: ```sql INSERT INTO table_name VALUES (value1, value2,....) ``` 这里,`table_name`是你...
在MySQL数据库中,如果你需要执行一个操作,即当数据存在时进行更新,如果不存在则进行插入,你可以使用`INSERT INTO...ON DUPLICATE KEY UPDATE`语句。这个功能强大的语句结合了`INSERT`和`UPDATE`操作,允许你在...
MySQL中的`INSERT INTO SELECT`语句是一种非常实用的数据库操作,它允许你从一个或多个数据源中选择数据,并将其插入到另一个表中。这种操作在数据迁移、数据整合或者生成汇总报告时非常常见。下面将详细介绍`INSERT...
"Insert Into"是SQL语言中的一个关键操作,用于向数据库表中插入新的数据记录。这个命令的基本语法结构是`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`,其中`table_name`是你要...
MySQL Insert Into 添加数据 MySQL Insert Into 语句用于向数据表中添加数据记录。Insert Into 语句的基本语法是:INSERT INTO tb_name VALUES (value1, value2,...)。这个语法表示向表中所有的字段按顺序都插入...
使用批量插入语句是实现 MySQL 大批量数据插入的有效方法,能够提高数据插入的速度和效率。 知识点: 1. MySQL 大批量数据插入的需求和挑战 2. 使用批量插入语句实现大批量数据插入 3. 批量插入语句的格式和使用...
- 尽管这不在文档中直接提及,但提升磁盘I/O性能对于提高MySQL插入速度同样重要。这包括优化文件系统、使用更快的磁盘或者使用SSD等措施。 9. 使用第三方工具监控和管理: - 使用如Unix的top、Windows的任务管理...
INSERT INTO 表一 (column1, column2, column3, column4) select column1, column2, column3, column4 from 表二 问题二 表中插入数据时,某一字段取数据库中该字段的最大值,并+1, 在表中插入数据时,某一字段...
在MySQL数据库中,`REPLACE INTO` 和 `INSERT INTO` 是两种不同的数据插入语句,它们各有其特定的用途和行为。理解它们的区别对于优化数据库操作至关重要。 首先,`INSERT INTO` 是最基本的数据插入语句,它用于在...
本文主要探讨了两种不同的插入数据的方法:`INSERT INTO...VALUES` 和 `INSERT INTO...SELECT`,并以MSSQL(Microsoft SQL Server)为例,分析它们在性能上的差异。 首先,`INSERT INTO...VALUES` 语句用于向表中...
### MySQL的插入问题:如何获取自动增长的ID 在MySQL中,经常需要用到自动增长的ID字段作为表的主键,特别是在频繁进行数据插入操作时。本文将深入探讨以下几个方面: 1. **理解自动增长ID的工作原理** 2. **在...
MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...
综上所述,利用MyBatis结合MySQL实现批量插入不仅可以大幅提高数据处理效率,还能有效降低系统资源消耗,是数据库操作中不可或缺的一项技能。通过上述详细讲解,相信读者已经对如何实现批量插入有了清晰的理解。
通过一次`INSERT`语句插入多条记录,例如`INSERT INTO table_name VALUES(….),(….),(….)`,能显著提高效率。这种方法减少了与数据库交互的次数,从而减少开销。 4. **使用LOAD DATA INFILE**: 对于大批量数据...
在MySQL数据库中,`INSERT` 与 `SELECT` 的嵌套使用是一种强大的功能,它允许我们在一条SQL语句中从一个或多个数据源提取数据并将其插入到目标表中。这种技术尤其适用于需要合并不同表的数据或者创建数据备份的情况...
MySQL中的`REPLACE INTO`和`INSERT INTO ... ON DUPLICATE KEY UPDATE`是两种处理数据冲突的方法,它们在处理已有键值冲突时的行为有所不同。这两种语句都是在插入新记录时,如果发现存在相同的唯一键值,则采取不同...