InnoDB优化插入速度

来源:互联网 发布:知此知彼 编辑:程序博客网 时间:2024/06/05 01:06

调整MySQL的配置

innodb_buffer_pool_sizeinnodb_log_file_sizeinnodb_log_buffer_sizeinnodb_flush_log_at_trx_commit 

innodb_buffer_pool_size
这个参数对于InnoDB的查询和更新效率提升非常明显,在数据量逐渐增大时,如果使用默认值,会慢的出奇,适当增大此参数,性能会大幅度提升,当然是以内存消耗增加为代价,空间换取时间。如果是专门用于MySQL的服务器,可以将这个值调整到内存的百分之八十左右。

innodb_log_file_size
对于写操作,尤其是大数据量的操作影响是比较大的。64M-512M,视情况而定。

innodb_log_buffer_size
刷写日志的缓冲区大小,没必要太大,一秒flush的速度是一定的,16M差不多了。

innodb_flush_log_at_trx_commit
设置为0,安全性可能比较差,但是写速度会大幅度提升。
0,log buffer每秒就会被刷写日志文件到磁盘,提交事务时无操作。
1,每次提交事务,都会将log buffer刷写到日志
2,每次提交事务都会写日志,但不执行刷操作,每秒定时刷入日志文件。
默认值为1,可以保证ACID,但是性能是最差的。

刷和写是两个操作(两个系统调用),也就是flush和write,其中write只是把数据写入操作系统缓存中,也就是内存中,只有flush时才会持久化到硬盘。设置0和2在断电和系统崩溃时会丢失最后一秒数据,但由于是系统调用,如果flush的时候阻塞了,可能丢失不止1s的数据。

0 0
原创粉丝点击