1.用start transaction关闭mysql的自动提交,合理设置插入批量大小,不要一条数据提交一次。 2.修改表的存储引擎InnoDB为MyISAM。(因为InnoDB中存在redo log日志,每次更新表的结果先写入redo log中,等redo log满了之后再写入磁盘而这个过程是会停止其他所有的事务) 3.优化SQL(一条SQL语句插入多条数据) 4.尽量顺序插入(存储引擎底层采用的数据结构是B+tree
索引,如果每次插入记录都在索引的最后面,索引的定位效率很高,并且对索引调整较小;如果插入的记录在索引中间,则需要维护B+tree并且索引定位效率会下降,数据量较大时会有频繁的磁盘
*** 作)MySQL 限制的表大小为4GB。由于在MySQL 中使用了MyISAM 存储引擎,最大
表尺寸增加到了65536TB(2567 – 1字节)。由于允许的表尺寸更大,MySQL数据库的最大有效表尺寸通常是由 *** 作系统对文件大小的限制决定的,而不是由MySQL内部限制决定的。InnoDB 存储引擎将InnoDB 表保存在一个表空间内,该表空间可由数个文件创建。这样,表的大小就能超过单独文件的最大容量。表空间可包括原始磁盘分区,从而使得很大的表成为可能。表空间的最大容量为64TB。在实际工作中,有时经常地时行mysql数据库的导入和导入 *** 作,但对于大型sql文件导入时,phpmyadmin是不行的,有太多限制,比如记录,内存等!
比较好的办法仍是用mysql的source命令:
一、在客户端下 *** 作:
1、进行入客户端
2、mysql>use
数据库名(如果没有,先建一个)
3、mysql>set
names
'utf8'
(一般看导入的是什么格式的文件)
4、mysql>source
d:\aaa.sql
即可正常导入,如果有错,可以看出错提示
二、PHP文件 *** 作:
建立a.php
里面有下面内容
mysql_connet('xxxx')
mysql_query("set
names
'utf8'")
mysql_query("source
d:\aaa.sql'")
原理同上,主要方便了无法使用命令行用户的 *** 作
评论列表(0条)