向数据库添加100W条测试数据,直接在普通表中添加速度太慢,可以使用内存表添加,然后将内存表数据复制到普通表。

创建表

内存表

DROP TABLE IF EXISTS test_memory;

CREATE TABLE test_memory (

id INT (11) NOT NULL AUTO_INCREMENT,

item1 VARCHAR (20) NOT NULL,

item2 VARCHAR (100) NOT NULL,

PRIMARY KEY (id) USING HASH

) ENGINE = MEMORY AUTO_INCREMENT = 1 CHARACTER

SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Fixed STORAGE MEMORY;

普通表

DROP TABLE IF EXISTS test;

CREATE TABLE test (

id INT (11) NOT NULL AUTO_INCREMENT,

item1 VARCHAR (20) NOT NULL,

item2 VARCHAR (100) NOT NULL,

PRIMARY KEY (id)

) ENGINE = INNODB AUTO_INCREMENT = 1 CHARACTER

SET = utf8;

编写函数

CREATE FUNCTION str_rand(n INT) RETURNS varchar(255) CHARSET utf8

BEGIN

DECLARE i INT DEFAULT 0;

DECLARE char_str VARCHAR(255) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’;

DECLARE return_str VARCHAR(255) DEFAULT ‘’;

WHILE i < n DO

SET return_str = CONCAT(return_str,substring(char_str, FLOOR(1 + RAND()*62), 1));

SET i = i + 1;

END WHILE;

RETURN return_str;

END

编写存储过程

CREATE PROCEDURE add_test_data(IN n int)

BEGIN

DECLARE i INT DEFAULT 0;

WHILE i < n DO

INSERT INTO test_memory(item1,item2) VALUES (str_rand(8),MD5(‘123456’));

SET i = i + 1;

END WHILE;

END

调用存储过程

CALL add_data(1000000);

调用过程可能报错,The table ‘test_memory’ is full。

解决办法:

查看内存表大小相关参数

show VARIABLES like ‘%max_heap_table_size%’;

查看临时表大小控制参数

show VARIABLES like ‘%tmp_table_size%’;

1). 设置新的参数,这样设置的参数重启就失效了,

mysql> set global max_heap_table_size=1048576000

mysql> set global tmp_table_size=1048576000

执行完差不多3分钟。

将内存表数据复制到普通表

INSERT INTO test SELECT * FROM test_memory;

这个过程较快,差不多20秒内。

mysql怎么插入10w测试数据_mysql快速插入100万测试数据相关推荐

  1. 如何查mysql里有多少条数据_mysql快速查询数据库中有多少条数据

    慕尼黑的夜晚无繁华 mysql 统计 表的数量:SELECT COUNT(1) FROM information_schema.TABLES WHERE TABLE_SCHEMA = '你的数据库'; ...

  2. mysql批量插入数据测试性能_mysql批量插入测试数据

    onethinkp导入excel /** * Excel导入函数 * @author crx349 */ if (!empty($_FILES)) { $config = array( 'maxSiz ...

  3. mysql 导入主键冲突_MySQL 处理插入过程中的主键唯一键重复值的解决方法

    本篇文章主要介绍在插入数据到表中遇到键重复避免插入重复值的处理方法,主要涉及到IGNORE,ON DUPLICATE KEY UPDATE,REPLACE:接下来就分别看看这三种方式的处理办法. IG ...

  4. mysql批量插入跟更新_Mysql批量插入和更新的性能-问答-阿里云开发者社区-阿里云...

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  5. mysql汉字插不进去_Mysql下插入汉字失败

    1.问题:mysql 遇到某些中文插入异常 最近有同学反馈了这样一个问题: 上述语句在脚本中 load 入库的时候会 hang 住,web 前端.命令行操作则要么抛出 Incorrect string ...

  6. mysql 批量插入数据方法_mysql大批量插入数据的4种方法示例

    前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用, ...

  7. mysql批量插入跟更新_Mysql批量插入和更新的性能

    利用Hibernate,连接池使用的是BoneCP,做了一个MySql批量插入和批量更新的Demo,出现了下面两个问题. 1.批量插入.我采用的是原生态的JDBC,每次批量插入60条数据左右(数据量不 ...

  8. mysql中输入没反应_mysql数据库插入无反应问题

    情景再现: 页面点击插入数据操作无反应 问题追溯: 查看日志,sql执行语句输出,sql语句无错,报异常Lock wait timeout exceeded; try restarting trans ...

  9. mysql导入100000000需要多久_MYSQL批量插入千万级数据只需百秒

    1.首先建立一张student表函数 create table(id int(20) NOT NULL AUTO_INCREMENT,sex char(1),name varchar(20));spa ...

最新文章

  1. 计算机网络——OSI与TCPIP体系架构、功能及协议
  2. 用awk数组处理两个文件的例子
  3. wxWidgets:wxStatusBar类用法
  4. Hibernate中使用Criteria查询及注解——(hibernate.cfg.xml)
  5. java虚拟机参数优化_JAVA虚拟机JVM参数优化(2):垃圾收集算法选择
  6. Comparable和Comparator区别是什么?差点吃屎
  7. 趣图:当我捕获Bug的时候
  8. python多线程下载_python3 多线程下载
  9. js+css 使div背景图在ie6中透明
  10. 关于编程开发的最小系统学习法
  11. c语言常用数学函数6,C语言入门(6)——C语言常用数学函数
  12. 用python做计算器(超级版)
  13. vhdl8三种方式实现38译码器
  14. Java对比两个json 的数据结构和内容是否一样
  15. 「 计算机视觉」帧差法移动侦测
  16. RegNet网络结构与搭建
  17. [导入]陈冠希蛰伏35天后闪电复出 将与舒淇演爱情片
  18. elasticsearch增删改查实现
  19. stripped 和 not stripped
  20. 如何设置windows防火墙的出入规则

热门文章

  1. 升级鸿蒙3.0需要备份吗,升级鸿蒙OS3.0机型曝光!大哥,你是认真的吗?
  2. uos配置 java 环境变量_CentOS 7.3 环境配置java和tomcat开机启动
  3. 二元相图软件_FactSage 软件教程 入门学习资料汇总
  4. arthas 查看哪个方法调用最耗时_阿里巴巴问题排查神器Arthas使用实践
  5. 计算机控制系统第1次作业,计算机控制系统第1次作业86分.doc
  6. python object单引号变成双引号_Python学习第163课--Linux命令行中的单引号和双引号...
  7. MATLAB使用教程(三)——在文件中编程
  8. 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
  9. php 图片 byte数组,php – 将图像存储在PostgreSQL数据库的bytea字段中
  10. c++实现卷积码编码和维特比译码_鑫艾勒维特家用别墅电梯:安全至上,无可替代...