mysql innodb myisam 插入数据_MYSQL批量插入数据最佳实践(MYISAM,InnoDB)

在使用MYSQL批量插入数据时我们一般可选的方式有:

* 长SQL  insert into table(xx,xx) values(xx,xx),(xx,xx)

* 或者执行多个单条

INSERT INTO table(xx,xx) VALUES (xx,xx);语句

* 使用 LOAD DATA INFILE(导入)是SELECT...INTO OUTFILE(导出)

* 使用 insert into ...select... 等

但在使用这些方式之前,你可能得考虑一下执行速度问题。因为在MYSQL中的MyISAM与InnoDB引擎在读写操作执行效率有所不同。

至于MyISAM与InnoDB的区别请看:

Advantages of InnoDB

InnoDB should be used where

data integrity

comes a priority because it inherently takes care of them by the help of relationship constraints and transactions.

Faster in write-intensive

(inserts,

updates) tables because it utilizes row-level locking and only hold up

changes to the same row that’s being inserted or updated.

Disadvantages of InnoDB

Because InnoDB has to

take care of the different relationships between tables, database

administrator and scheme creators have to

take more time in designing

the data models which are more complex than those of MyISAM.

Consumes more system resources

such

as RAM. As a matter of fact, it is recommended by many that InnoDB

engine be turned off if there’s no substantial need for it after

installation of MySQL.

No full-text indexing

.

Advantages of MyISAM

Simpler to design and create

, thus better for beginners. No worries about the foreign relationships between tables.

Faster than InnoDB on the whole

as a result of the simpler structure thus much less costs of server resources.

Full-text indexing

.

Especially good for

read-intensive (select) tables

.

Disadvantages of MyISAM

No data integrity

(e.g.

relationship constraints) check, which then comes a responsibility and

overhead of the database administrators and application developers.

Doesn’t support transactions

which is essential in critical data applications such as that of banking.

Slower

than

InnoDB for tables that are frequently being inserted to or updated,

because the entire table is locked for any insert or update.

在使用InnoDB引擎批量插入数据时有几点是要说明的:

InnoDB批量插入最佳方式:

* When importing data into InnoDB, make sure that MySQL does not have autocommit mode enabled because that

requires a log flush to disk for every insert. To disable autocommit during your import operation, surround it with

SET autocommit and COMMIT statements:

SET autocommit=0;

... SQL import statements ...

COMMIT;

If you use the mysqldump option --opt, you get dump files that are fast to import into an InnoDB table,

even without wrapping them with the SET autocommit and COMMIT statements.

* If you have UNIQUE constraints on secondary keys, you can speed up table imports by temporarily turning off

the uniqueness checks during the import session:

SET unique_checks=0;

... SQL import statements ...

SET unique_checks=1;

For big tables, this saves a lot of disk I/O because InnoDB can use its insert buffer to write secondary index

records in a batch. Be certain that the data contains no duplicate keys.

* If you have FOREIGN KEY constraints in your tables, you can speed up table imports by turning the foreign key checks

off for the duration of the import session:

SET foreign_key_checks=0;

... SQL import statements ...

SET foreign_key_checks=1;

For big tables, this can save a lot of disk I/O.

‍以上方式我这里就不给出具体实例了。

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2011-12-21 09:53

浏览 2113

分类:数据库

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值