mysqldump新增参数控制插入数据和建索引顺序

标签: mysqldump 参数 控制 | 发表时间:2012-02-07 20:34 | 作者:
出处:http://www.iteye.com

InnoDB有个特性“fast index creation”,创建和删除非聚簇索引时不需要重建表。

这句是转载的:This mechanism also means that you can generally speed the overall process of creating and loading an indexed table by creating the table with only the clustered index, and adding the secondary indexes after the data is loaded.

 

因此想到在mysqldump中,如果构造为先执行insert,再加索引,能够加速大的InnoDB表的重建过程。

 

1、 mysqldump 中的 “disable keys”

  其实类似的思路在现在的mysqldump中已经有了,在insert之前有alter table xxx disable keys,插入数据之后alter table xxx enable keys. 但这个InnoDB 不支持。

 

2、 实现

新增一个参数--keys-last,当使用--keys-last=1时,在create table之后把非聚簇索引删除,insert之后再创建。

 

3、 执行效果

CREATE TABLE `tb` (

  `a` int(11) NOT NULL DEFAULT '0',

  `c` int(11) DEFAULT NULL,

  PRIMARY KEY (`a`),

  UNIQUE KEY `a` (`a`,`c`),

  KEY `b` (`c`,`a`),

  KEY `ccc` (`a`,`c`),

  CONSTRAINT `tb_ibfk_1` FOREIGN KEY (`a`) REFERENCES `ta` (`a`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Insert into tb values(1,1);

bin/mysqldump -Srun/mysql.sock --keys-last=1 --disable-keys=0  -uroot test tb

LOCK TABLES `tb` WRITE;

ALTER TABLE `tb` DROP  KEY `a` , DROP KEY `b` , DROP KEY `ccc` ;

INSERT INTO `tb` VALUES (1,1);

ALTER TABLE `tb` ADD UNIQUE KEY `a` (`a`,`c`), ADD KEY `b` (`c`,`a`), ADD KEY `ccc` (`a`,`c`);

UNLOCK TABLES;

/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

 

由于明确是InnoDB的表,将disable-keys的两个语句取消。

       Patch文件 (基于5.5.20) http://bugs.mysql.com/file.php?id=17978



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [mysqldump 参数 控制] 推荐:

mysqldump新增参数控制插入数据和建索引顺序

- - ITeye博客
InnoDB有个特性“fast index creation”,创建和删除非聚簇索引时不需要重建表. 因此想到在mysqldump中,如果构造为先执行insert,再加索引,能够加速大的InnoDB表的重建过程. 1、 mysqldump 中的 “disable keys”.   其实类似的思路在现在的mysqldump中已经有了,在insert之前有alter table xxx disable keys,插入数据之后alter table xxx enable keys.

MYSQL入门学习之十九:MYSQLDUMP命令参数详解

- - CSDN博客推荐文章
mysqldump是mysql用于转存储数据库的实用程序. 它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等. 对于导出的文件,可使用SOURCE命令导入数据库. 使用mysqldump -?命令,可以查看mysqldump的具体参数及详细说明.

mysqldump - 给 DBA 的 25 个小技巧

- - jackyrong
mysqldump 是文本备份还是二进制备份. 它是文本备份,如果你打开备份文件你将看到所有的语句,可以用于重新创建表和对象. 它也有 insert 语句来使用数据构成表. mysqldump 的语法是什么. 使用 mysqldump 怎样备份所有数据库. 使用 mysqldump 怎样备份指定的数据库.

[MySQL FAQ]系列 -- mysqldump选项之skip-opt

- - MySQL 中文网
最近在用mysqldump备份时,想要把数据表和数据分开备份,因此做了2次备份. 执行备份数据库表结构时,指定了 --skip-opt 选项,相当于:. 选项 --create-option 看起来比较不起眼:. 事实上,如果把它disable的话,备份出来的表结构,会少了:. 等MySQL特有的数据表属性,需要注意下.

使用mysqldump 对数据库进行备份的乱码问题

- - CSDN博客数据库推荐文章
最近在做项目的工程中,由于系统中需要提供数据库备份的功能,经过网上一番搜索,觉得采用简单的mysqldump. 通过执行上面的代码段的出来的文件中,中文部分都已乱码出现,起初怀疑是数据库的编码有关,于是通过以下方式来查询数据库的编码. 经过以上步骤可以确定数据库的编码是没有问题的,经过再次网上搜索 得到如下结论.

[Elasticsearch] 控制相关度 (五) - function_score查询及field_value_factor,boost_mode,max_mode参数 - dm_vincent的专栏 - 博客频道 - CSDN.NET

- -
本章翻译自Elasticsearch官方指南的Controlling Relevance一章. function_score查询. function_score查询是处理分值计算过程的终极工具. 它让你能够对所有匹配了主查询的每份文档调用一个函数来调整甚至是完全替换原来的_score. 实际上,你可以通过设置过滤器来将查询得到的结果分成若干个子集,然后对每个子集使用不同的函数.

JMETER 参数化

- - 开源软件 - ITeye博客
用Jmeter中的函数获取参数值,__Random,__threadNum,__CSVRead,__StringFromFile. 2.用户定义的变量 “配置元件”->“用户定义的变量”. 从csv文件中读取“配置元件”->“CSV Data Set Config”. 调用方法${id_g1} ${id_g2} ${id_g3}.

Eclipse.ini参数分析

- - CSDN博客推荐文章
         我只修改过一次eclipse.ini文件,是因为myeclipse使用出了问题:编辑jsp页面的时候写java代码,只要用到自带的关联提示(例如String.,只要敲击“.”就会卡死). 后来同事说可以试着修改eclipse.ini文件,把内存改大一点也许就行了,结果改了N次几乎到1G了还是没解决.

mysql参数优化

- - CSDN博客推荐文章
### 用来存放InnoDB的内部目录,对于大数据设置16M足够用. ### InnoDB 缓存总大小设置,一般设置为系统内存的70%-80%. ### 指定所有InnoDB数据文件的路径和大小分配. ### 文件读写io数设置:. ### InnoDB内核的并发线程数设置. ### 设置日值的大小.

mailto 参数讲解

- - 研发管理 - ITeye博客
Mailto能让访问者便捷向网站管理者发送电子邮件. 我们还可以利用mailto做许多其它事情. Mailto甚至还能自动在电子邮件中填入“抄送”和“密件抄送”者,或自动填写主题行.   1)基本的 mailto.   单击这里给我发电子邮件.