mysql 批量插入数据(INNODB)优化

innodb的主要优化
init_connect='SET autocommit=0'    //关闭自动提交,这个对于innodb来说,很重要  
 innodb-file-per-table=1            //使用独立表空间  
 innodb-open-file=500               //打开最大文件数据是500,默认是300  
 innodb_log_file_size=512M          //log文件大小  
 innodb_log_buffer_size=8M          //缓冲日志数据的缓冲区的大小  
 innodb_flush_log_at_trx_commit=0   //提交数据等级0是最快,但是有可能会丢数据  
 innodb_buffer_pool_size=5G         //缓冲池大小,我把它设置内在的65%  
 innodb_log_files_in_group=3        //日志文件总数  
 innodb_file_io_threads=8           //根cpu核数是一样,读写文件进程数  
 event_scheduler=1                  //开启动mysql event  
  
//添加一个mysql event  
CREATE EVENT `commit_event` ON SCHEDULE EVERY 5 MINUTE STARTS '2017-12-22 9:06:26' ON COMPLETION NOT PRESERVE ENABLE DO COMMit  


1,自动提交对innodb的影响非常大的,这个我做过测试,请参考,mysql autocommit对myisam,innodb的性能影响.


会话级关闭自动提交  
mysql> set autocommit=off;  
Query OK, 0 rows affected (0.00 sec)  
mysql>  show variables like 'autocommit';  
+---------------+-------+  
| Variable_name | Value |  
+---------------+-------+  
| autocommit    | OFF   |  
+---------------+-------+  
1 row in set (0.00 sec)  
2、@@autocommit为0表示off,为1表示on


mysql> select @@autocommit;   //查看一下autocommit的设置  
+--------------+  
| @@autocommit |  
+--------------+  
|            0 |  
+--------------+  
1 row in set (0.00 sec)  


2,innodb_flush_log_at_trx_commit我把它设置成0,我只要求速度最快,最是统计推广的弹窗,这些数据只是为了我们后期统计和分析用的,没有太大的价值。如果数据很重要就不要设置成0了。


0代表日志只大约每秒写入日志文件并且日志文件刷新到磁盘.
1InnoDB会在每次提交后刷新(fsync)事务日志到磁盘上
2代表日志写入日志文件在每次提交后,但是日志文件只有大约每秒才会刷新到磁盘上.


3,还有一点就是我用了mysql event功能,根linux的crontab差不多,以前没在生产环境中用过mysql event,这次试了一下,还是挺给力的。关于mysql event请参考,mysql event 是什么,有什么用.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值