MySQL如何快速插入大量数据_MySQL

php中文网
发布: 2016-06-01 13:36:20
原创
1626人浏览过

bitsCN.com

mysql如何快速插入大量数据

 

这几天尝试了使用不同的存储引擎大量插入MySQL表数据,主要试验了MyISAM存储引擎和InnoDB。
下面是实验过程:    

一、InnoDB存储引擎。

创建数据库和表

Sql代码  

CREATE DATABASE ecommerce;  

CREATE TABLE employees (       

    id INT NOT NULL,       

    fname VARCHAR(30),       

    lname VARCHAR(30),    

    birth TIMESTAMP,         

    hired DATE NOT NULL DEFAULT '1970-01-01',       

    separated DATE NOT NULL DEFAULT '9999-12-31',       

    job_code INT NOT NULL,       

    store_id INT NOT NULL      

)   

         

partition BY RANGE (store_id) (       

    partition p0 VALUES LESS THAN (10000),       

    partition p1 VALUES LESS THAN (50000),       

    partition p2 VALUES LESS THAN (100000),       

    partition p3 VALUES LESS THAN (150000),  

    Partition p4 VALUES LESS THAN MAXVALUE       

);  

     

创建存储过程

Sql代码  

use ecommerce;  

CREATE PROCEDURE BatchInsert(IN init INT, IN loop_time INT)  

BEGIN  

    DECLARE Var INT;  

    DECLARE ID INT;  

    SET Var = 0;  

    SET ID = init;  

        WHILE Var

        insert into employees(id,fname,lname,birth,hired,separated,job_code,store_id) values(ID,CONCAT('chen',ID),CONCAT('haixiang',ID),Now(),Now(),Now(),1,ID);  

        SET ID = ID + 1;  

        SET Var = Var + 1;  

        END WHILE;  

END;  

 

调用存储过程插入数据

Sql代码  

CALL BatchInsert(30036,200000)  

用时:3h 37min 8sec

二、MyISAM存储引擎

创建表

Sql代码  

use ecommerce;  

CREATE TABLE ecommerce.customer (  

   id INT NOT NULL,  

   email VARCHAR(64) NOT NULL,  

网趣网上购物系统HTML静态版
网趣网上购物系统HTML静态版

网趣购物系统静态版支持网站一键静态生成,采用动态进度条模式生成静态,生成过程更加清晰明确,商品管理上增加淘宝数据包导入功能,与淘宝数据同步更新!采用领先的AJAX+XML相融技术,速度更快更高效!系统进行了大量的实用性更新,如优化核心算法、增加商品图片批量上传、谷歌地图浏览插入等,静态版独特的生成算法技术使静态生成过程可随意掌控,从而可以大大减轻服务器的负担,结合多种强大的SEO优化方式于一体,使

网趣网上购物系统HTML静态版 0
查看详情 网趣网上购物系统HTML静态版

   name VARCHAR(32) NOT NULL,  

   password VARCHAR(32) NOT NULL,  

   phone VARCHAR(13),  

   birth DATE,  

   sex INT(1),  

   avatar BLOB,  

   address VARCHAR(64),  

   regtime DATETIME,  

   lastip VARCHAR(15),  

   modifytime TIMESTAMP NOT NULL,  

  PRIMARY KEY (id)  

)ENGINE = MyISAM ROW_FORMAT = DEFAULT  

partition BY RANGE (id) (       

    partition p0 VALUES LESS THAN (100000),       

    partition p1 VALUES LESS THAN (500000),       

    partition p2 VALUES LESS THAN (1000000),       

    partition p3 VALUES LESS THAN (1500000),  

    partition p4 VALUES LESS THAN (2000000),  

    Partition p5 VALUES LESS THAN MAXVALUE       

);  

 

创建存储过程

Sql代码  

use ecommerce;  

DROP PROCEDURE IF EXISTS ecommerce.BatchInsertCustomer;  

CREATE PROCEDURE BatchInsertCustomer(IN start INT,IN loop_time INT)  

BEGIN  

    DECLARE Var INT;  

    DECLARE ID INT;  

    SET Var = 0;  

    SET ID= start;  

        WHILE Var

        DO  

        insert into customer(ID,email,name,password,phone,birth,sex,avatar,address,regtime,lastip,modifytime)   

        values(ID,CONCAT(ID,'@sina.com'),CONCAT('name_',rand(ID)*10000 mod 200),123456,13800000000,adddate('1995-01-01',(rand(ID)*36520) mod 3652),Var%2,'http://t3.baidu.com/it/u=2267714161,58787848&fm=52&gp=0.jpg','北京市海淀区',adddate('1995-01-01',(rand(ID)*36520) mod 3652),'8.8.8.8',adddate('1995-01-01',(rand(ID)
*36520) mod 3652));  

        SET Var = Var + 1;  

        SET ID= ID + 1;  

        END WHILE;  

END;  

 

调用存储过程插入数据

Sql代码  

ALTER  TABLE  customer  DISABLE  KEYS;   

CALL BatchInsertCustomer(1,2000000);  

ALTER  TABLE  customer  ENABLE  KEYS;  

 

用时:8min 50sec

通过以上对比发现对于插入大量数据时可以使用MyISAM存储引擎,如果再需要修改MySQL存储
引擎可以使用命令:

Sql代码  

ALTER TABLE t ENGINE = MYISAM;  

bitsCN.com
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号