这几天尝试了使用不同的存储引擎大量插入MySQL表数据,主要试验了MyISAM存储引擎和InnoDB。下面是实验过程:
一、InnoDB存储引擎。
创建数据库和表
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 );
创建存储过程
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 < loop_time DO 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;
调用存储过程插入数据
CALL BatchInsert(30036,200000)
用时:3h 37min 8sec
二、MyISAM存储引擎
创建表
use ecommerce; CREATE TABLE ecommerce.customer ( id INT NOT NULL, email VARCHAR(64) NOT NULL, 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 );
创建存储过程
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 < loop_time 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;
调用存储过程插入数据
ALTER TABLE customer DISABLE KEYS; CALL BatchInsertCustomer(1,2000000); ALTER TABLE customer ENABLE KEYS;
用时:8min 50sec
通过以上对比发现对于插入大量数据时可以使用MyISAM存储引擎,如果再需要修改MySQL存储引擎可以使用命令:
ALTER TABLE t ENGINE = MYISAM;
相关推荐
本文将探讨如何高效地读取和写入大量数据,主要分为三个步骤:解决读取问题、数据处理和数据插入。 ### 第一步:解决读取问题 1. **避免使用重型ORM框架**:如Entity Framework和NHibernate,这些框架在处理大数据...
当处理大量数据时,PHPmyadmin虽然提供了便捷的导入导出功能,但可能会遇到一些限制,如文件大小限制和特殊字符处理问题。针对这些挑战,我们可以采用自定义脚本来实现更灵活的数据操作。 首先,我们来看导出程序。...
2. **批量插入(Bulk Insert)**:SQL Server 提供了一个`SqlBulkCopy`类,用于快速地将大量数据从一个数据源(如DataTable或DataReader)复制到SQL Server表中。这比逐行插入要快得多。 ```csharp using ...
在IT行业中,处理大量数据是常见的任务之一,尤其是在数据分析、报表生成或数据迁移等领域。本教程将详述如何使用Apache POI库读取Excel数据,并通过Java的JDBC接口批量插入到MySQL数据库中。Apache POI是Java平台上...
在本例中,提供的`excelImport.py`脚本应该包含了上述部分或全部逻辑,用于实现快速批量导入Excel数据到MySQL数据库。根据实际需求,你可以对脚本进行调整,例如适应不同的数据库字段结构或处理更多Excel文件。
批量同步则是在特定时间点进行一次性的大量数据迁移,比如在业务低峰期。 对于“mysql-oracle数据同步”这个主题,我们可以采用以下几种方法: 1. **使用ETL工具**:Extract, Transform, Load(ETL)工具如...
数据库,大批量插入测试数据,可用于生成随机数据
通常来说C++操作MySQL的时候,往Mysql中插入10000条简单数据,速度非常缓慢,居然要5分钟左右, 而打开事务的话,一秒不到就搞定了! 具体实现代码如下: #include #include #include #include "mysql.h" #...
在数据库操作中,批量插入大量数据是常见的性能优化策略,特别是在大数据处理或系统初始化时。批量插入能够显著减少网络通信次数,提升效率,降低数据库事务的开销。本例展示了如何在4秒内高效地插入10万条数据,...
标题 "Excel大量数据快速导入数据库源码" 描述的是一个编程解决方案,用于高效地将Excel电子表格中的大量数据批量导入到数据库系统中。这个过程通常涉及到数据预处理、数据清洗和数据传输等步骤,是数据处理工作流程...
10. **安全测试**:测试权限控制、审计日志等功能,确保在大量数据情况下,信息的安全性。 总之,"mysql百万级测试数据下载 300W条"为数据库测试提供了一个理想的数据环境。通过这些数据,开发者和测试人员能够全面...
- 尽管这不在文档中直接提及,但提升磁盘I/O性能对于提高MySQL插入速度同样重要。这包括优化文件系统、使用更快的磁盘或者使用SSD等措施。 9. 使用第三方工具监控和管理: - 使用如Unix的top、Windows的任务管理...
`SELECT INTO OUTFILE`和`LOAD DATA INFILE`是快速处理大量数据的有效工具,但在实际操作中,需要根据具体情况调整参数,以确保数据完整性和一致性。此外,迁移前在新服务器上预先创建表结构,以及监控迁移过程,都...
- INSERT与UPDATE:了解如何高效地插入和更新大量数据,避免全表扫描。 - DELETE:在删除数据时注意效率,避免影响整个表的性能。 5. 数据库事务: - 事务处理:了解ACID(原子性、一致性、隔离性、持久性)特性...
MySQL 大批量数据插入是指在短时间内将大量数据插入到 MySQL 数据库中,需要设计目标要求能支持平均每秒插入 1000 条数据以上。MySQL 提供了多种方法来实现大批量数据插入,包括使用批量插入语句、使用 LOAD DATA ...
它可以存储大量数据,且提供了SQL语言来执行查询、更新和管理数据,适合处理复杂的数据关系和事务。 “xls2sql”工具就是为了解决Excel与MySQL之间的数据转换问题。它允许用户将Excel文件中的数据批量导入到MySQL...
标题中的“利用Flume将MySQL表数据准实时抽取到HDFS、MySQL、Kafka”是一项数据集成任务,涉及Apache Flume、MySQL数据库、Hadoop Distributed File System (HDFS) 和Apache Kafka这四个关键技术。Flume是Apache的一...
### MySQL导入大量数据的方法 在处理大量的数据导入MySQL数据库时,经常会遇到一些挑战,尤其是在数据库备份文件较大的情况下(比如超过20MB)。本文将以Joomla网站的数据库导入为例,介绍如何有效地解决这个问题。...
MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它支持SQL语言,具有高效率、稳定性和可扩展性,适合处理大量数据。在本系统中,MySQL作为数据存储的后台,负责接收和管理来自串口的各类数据。 “串口数据...