怎么提高Mysql执行sql导入的速度
1、如果mysql的data数据很少,内存足够大,可以把data防止到内存盘中。
linux如下设置内存盘:
mount -t ramfs none /ram
默认使用内存一半
如果内存不够大,系统有多个硬盘,则把mysql应用程序和data目录分开到不同硬盘上。
2、mysql的表设置为myiasm,比同等条件下的innodb能快20倍以上
3、导入完成以后才创建数据库索引
4、导入完成以后根据需要转换为其他engine,比如innodb
5、多条数据插入一个表,可以使用多记录方式:
insert into tablename values(’xxx’,'xxx’),(’yyy’,'yyy’)…;
6、如果多个mysql执行导入,可以使用delayed
insert delayed into tablename values(’sss’,’ssss’);
7、大文件sql文件可以用split分成多份再导
8、同等条件下,redhat比ubuntu强很多(几乎肯定)
9 性能调整技巧(Performance tuning tips)
1. 如果 Unix top 或 Windows 任务管理器(Task Manager) 显示服务的 CPU 占用率小于 70%,(shows that the CPU usage percentage with your workload is less than 70 %,)你的系统瓶颈可能在磁盘读写上。或许你提交了大量的事务,或者是缓冲池(buffer pool)太小了。将缓冲池设大点会有所帮助,但一定要注意不能大于物理内存的 80%。
2. 在一个事务中包含几个修改。如果事务对数据库进行了修改,那么在这个事务提交时 InnoDB 必须刷新日志到磁盘上。因为硬盘的旋转速度通常至多为 167 转/秒,那么只要磁盘不欺骗操作系统,提交的事务数目限止也同样为 167 次/秒·用户。
3. 如果掉失最近的几个事务无所谓的话,可以在 my.cnf 文件中将参数 innodb_flush_log_at_trx_commit 设置为 0。InnoDB 无论如何总是尝试一秒刷新(flush)一次日志,尽管刷新并不能得到保证。
4. 将日志文件(log files)设大一点,使日志文件的总和正好与缓冲池(buffer pool)一样大。当 InnoDB 用光日志文件的空间时,它不得不在一个时间点上将缓冲池内修改过的内容写到磁盘上。 小的日志文件可能引起不必要的磁盘写操作。但是大的日志文件的缺点就是在数据恢复时将占用较长的时间。
5. 同样 log buffer 尽量设大点,比如说 8 MB。
6. 如果要存储变长的字符串或字段可能会包含大量的 NULLs,请使用 VARCHAR 型字段代替 CHAR 。一个 CHAR(n) 字段总是使用 n bytes 来存储数据,即使这个字符串很短或是一个 NULL 值。较小的表更加适合缓冲池同时能够减少磁盘 I/O 。
7. (适合从 3.23.41 以上版本) 在某些版本的 Linux 和 Unixes 中,使用 Unix fsync 或其它类似的方法将文件刷新到磁盘是异常地慢的。InnoDB 默认的方法就是 fsync 。如果你对数据库系统的磁盘写性能不能感到满意,你可以尝试在 my.cnf 中将 innodb_flush_method 设置为 O_DSYNC,尽管 O_DSYNC 选项在多数的系统上看起来比较慢。
8. 在向 InnoDB 导入数据时,请确认 MySQL 没有打开 autocommit=1 。否则每个插入语句都要将 log 刷新到磁盘。在你的 SQL 导入文件的第一行加入
set autocommit=0;
并在最后一行加入
commit;
如果使用 mysqldump 选项 –opt,你将会得到一个快速导入 InnoDB 表的转储(dump)文件,甚至可以不再使用上面所提的 set autocommit=0; … commit; 。
9. 小心 insert 集全的大回滚(roolback):在插入时 InnoDB 使用插入缓冲来减少磁盘 I/O,但在相应的回滚中却没有使用这样的机制。一个 disk-bound rollback 可能会花费相应插入时间的 30 倍。如果发生一个失控的回滚,你可以查看第 6.1 章节的技巧来停止它。
10. 同样也要小心一个大的 disk-bound 的操作。使用 Drop TABLE 或 TRUNCATE (从 MySQL-4.0 以上) 来清空一个表,而不要使用 Delete FROM yourtable。
11. 如果需要插入大量记录行可以使用多行(multi-line)的 Insert 来减少客户端与服务器端的通信开销:
Insert INTO yourtable VALUES (1, 2), (5, 5);
这个技巧对插入任何表均有效,而不仅仅是 InnoDB。
12. 如果在辅键上有 UNIQUE 约束,从 3.23.52 和 4.0.3 开始,可以通过在一个导入会话中将唯一键检查(uniqueness check)关闭来提高数据导入速度:
SET UNIQUE_CHECKS=0;
一个大的表导入这将减少大量的磁盘 I/O,因为这时 InnoDB 可能使用自身的插入缓冲来分批地记录辅助索引。
13. 如果在表中有一个子 FOREIGN KEY 约束,从 3.23.52 和 4.0.3 开始,可以通过在一个导入会话中将外键检查(foreign key check)关闭来提高数据导入速度:
SET FOREIGN_KEY_CHECKS=0;
对一个大的表导入这将减少大量的磁盘 I/O。
分享到:
相关推荐
MySQL导入sql脚本错误:2006 – MySQL server has gone away 到如一些小脚本很少报错,但最近导入一个10+M的SQL脚本,却重复报错: Error occured at:2014-03-24 11:42:24 Line no.:85 Error Code: 2006 - MySQL ...
1、待执行的sql文件为1.sql、2.sql、3.sql、4.sql等 2、写一个batch.sql文件: ... 您可能感兴趣的文章:Shell脚本中执行sql语句操作mysql的5种方法教你如何在MySQL命令行中使用SQL语句的规则Mysql命令行导入s
MySQL数据导入到Oracle的中间件,其工作原理是将MySQL数据的导出命令写入到d:/mysqltooracle/exportcmd.txt,打开该文件即可获取需要手动执行的导出MySQL数据的sql脚本,执行后会在 “/var/mysqltooracle”(针对...
Mysql命令行下用source命令导入sql文件,压缩包里附上了一个sql的例子文件和效果图片。
今天的这篇文章用来讨论如何解决导入mysql大数据文件的问题,其实说的简单了就是一条SQL语句,而如果你是一名SQL高手,那完全可以略过此文。
Mysql执行脚本基本命令步骤,包含SQL 命令导出和导入数据库 ,创建包含sql命令的sql脚本文件
在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: 代码如下:mysql> source d:/myprogram/database/db.sql; 另附mysql常用命令: 一) 连接MYSQL: 格式: ...
mysql导入导出表结构及表数据及执行sql常用指令.docx
个人经验: Linux下类似, 只是mysqldump在/usr/bin 目录下。 有时, 因为mysql版本的问题,无法通过上述方法到如,做JAVA开发的IDE Netbeans...直接将sql文件用文本编辑器打开,复制到Netbeans的SQL Command执行即可。
使用Node导入MySQL文件! 目录 importer.onDumpCompleted(callback) 贡献 安装 通过NPM : $ npm install --save-dev mysql-import 通过Github : git clone https://github.com/Pamblam/mysql-import.git ...
在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令: mysql> source c:\\test.sql; 另附mysql常用命令: (一) 连接MYSQL: 格式: mysql -h主机地址 -u用户名 -p...
1.安装mysql5.1略 2.安装geoserver2.3.1 略 3.准备shp文件shp2mysql_0_4.zip文件,里面有三个文件,将cygwin1.dll复制到window/system32或syswow64目录下。双击运行DOShere文件。...5.将sql文件导入到mysql中
最近在执行一个innoDB类型sql文件的时候,发现系统报错了,通过查找相关的资料终于解决了,所以下面这篇文章主要给大家介绍了关于mysql执行sql文件时报错Error: Unknown storage engine 'InnoDB'的解决方法,需要的...
解压后,直接使用idea导入项目,默认是打开了多数据源的,项目里面有现成的sql文件,执行sql文件;多数据源的开关在application-local.yml文件里面的guns:muti-datasource:open: true;多数据配置在multi文件夹下的...
4.可以设置调度,类似于 SQL Server 的导入导出 5.每个任务的所有设置都保存在一个dst的配置文件里,数据库连接密码 进行加密。加密过程是自己写的。以下是某个任务的配置文件 6.主窗口 根据任务的配置文件计算 任务...
项目流量过大时,数据新增变更量大,及时入库会出现同时给一张表做新增、修改,从而导致锁表,这时候可以将修改导成sql文件后入库,来缓解数据库压力
执行mysql导入命令导入该sql文件,表名可自行修改。
。
将MsSQL 数据导入 MySQL的工具...2、用通过管道导入并执行MySQL语句。 3、.net 调用外部程序,如DOS命令。 4、SQL2005与MySQL字段类型 对应信息(不知是否完全正确,欢迎指正)。 5、文本文件的内码转换:如GB->UTF8