首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bulk_insert_buffer_size和InnoDB

bulk_insert_buffer_size和InnoDB
EN

Database Administration用户
提问于 2013-09-11 07:25:07
回答 2查看 14.4K关注 0票数 3

我在这一页上读到了以下内容

http://dev.mysql.com/doc/mysql/en/server-system-variables.html

bulk_insert_buffer_size MyISAM使用一个特殊的树状缓存来使批量插入更快.选择插入..。值(.)、(.)、.和加载数据信息。此变量限制每个线程缓存树的大小(以字节为单位)。将其设置为0将禁用此优化。注意:此缓存仅在向非空表中添加数据时使用。默认值为8MB。这个变量是在MySQL 4.0.3中添加的。这个变量以前名为myisam_bulk_insert_tree_size。

我认为这意味着bulk_insert_buffer_size对InnoDB表没有任何影响,只对MyISAM表有影响。这是正确的吗?

EN

回答 2

Database Administration用户

发布于 2013-09-12 17:47:11

是的,你是对的。我以前写过这个:如何优化这个需要容纳mySQL百万行的5+表?

WHen大容量加载InnoDB表,其中最常被忽略的禁用设置之一是诺姆b

InnoDB体系结构

请注意系统表空间文件ibdata1中的双写缓冲区。每次向InnoDB表或事务日志写入16K页时,该页首先被写入双写缓冲区。您所需要做的就是禁用它,加载数据,并重新启用它。

步骤01 :禁用快速关机

代码语言:javascript
复制
mysql -uroot -p... -ANe"SET GLOBAL innodb_fast_shutdown = 0"

步骤02 :在没有双写缓冲区

的情况下重新启动mysql

代码语言:javascript
复制
service mysql restart --innodb-doublewrite=0

步骤03 :加载InnoDB数据

步骤04 :重新启动mysql

代码语言:javascript
复制
service mysql restart

警告

您还可以禁用外键检查和唯一检查。任何标准的mysqldump都已经为您完成了。

票数 7
EN

Database Administration用户

发布于 2013-09-12 16:30:31

是的,它只适用于MyISAM表。

For Innodb我们需要使用

来实现unique_checks和foreign_key_checks

set unique_checks=0;set foreign_key_checks=0;diable auto_commit。

插入.

集unique_checks=1;设置foreign_key_checks=1;启用auto_commit.

这提高了批量插入的性能。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/49646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档