Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1743215
  • 博文数量: 391
  • 博客积分: 8464
  • 博客等级: 中将
  • 技术积分: 4589
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 15:12
个人简介

狮子的雄心,骆驼的耐力,孩子的执著!

文章分类

全部博文(391)

文章存档

2023年(4)

2018年(9)

2017年(13)

2016年(18)

2014年(7)

2013年(29)

2012年(61)

2011年(49)

2010年(84)

2009年(95)

2008年(22)

分类: Mysql/postgreSQL

2013-06-12 17:24:00

1. MySQL导出的SQL语句在导入时有可能会非常非常慢,经历过导入仅45万条记录,竟用了近3个小时。在导出时合理使用几个参数,可以大大加快导 入的速度。

-e 使用包括几个VALUES列表的多行INSERT语法;
--max_allowed_packet=XXX 客户端/服务器之间通信的缓存区的最大大小;
--net_buffer_length=XXX  TCP/IP和套接字通信缓冲区大小,创建长度达net_buffer_length的行。

注意:max_allowed_packet和net_buffer_length不能比目标数据库的设定数值 大,否则可能出错。

首先确定目标库的参数值

mysql>show variables like 'max_allowed_packet';
mysql>show variables like 'net_buffer_length';

通过命令有 session级别和 global级别两种 如
session级别在设置后立即生效 断开连接后变量就失效了
set session smax_allowed_packet=1048576 (无权限要求)

global不是立即生效 而是对新连接生效
set global ssmax_allowed_packe=1048576(要求有SUPER权限)

经验总结:
在很多台机器上用方法一都没问题,但2011年11月14日遇到一台机器死活都不成功,
使用命令行方式:set global max_allowed_packet = 16M;
也不行,但使用
set global max_allowed_packet = 2*1024*1024*10;
成功了.

根据参数值书写mysqldump命令,如:
E:\eis>mysqldump -uroot -p eis_db goodclassification -e --max_allowed_packet=1048576 --net_buffer_length=16384 >good3.sql

之前2小时才能导入的sql现在几十秒就可以完成了。

2. mysql选项设置(解决repair with keycache问题)今天向导入一个数据库备份文件,运行一段时间后发现停在一个地方很长时间,用workbench监控了一下,发现repair with keycache这句很慢,上网查了一些,主要是对两个参数进行优化设置myisam_max_sort_file_size

mysql选项设置(解决repair with keycache问题)   今天向导入一个数据库备份文件,运行一段时间后发现停在一个地方很长时间,用workbench监控了一下,发现repair with keycache这句很慢,上网查了一些,主要是对两个参数进行优化设置myisam_max_sort_file_size和myisam_sort_buffer_size。这两个参数呃默认值是 
Java代码   myisam_max_sort_file_size=2G   myisam_sort_buffer_size=8M       修改配置文件改为(如果没有这两个参数则加上)  Java代码   myisam_max_sort_file_size=10G   myisam_sort_buffer_size=64M     之后导入程序运行比先前快多了,没有再出现repair with keycache这句。  如果改为还出现则继续调大这两个参数值。


阅读(3587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~