最近优化一个项目,使得数据插入速度由20row/s提升到900+row/s,性能飙升45倍左右。详细介绍如下:

 1

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
  2
 
 
 
 
 
 
 
 
 
 
 
 
如下SQL被诊断为可疑SQL
 
3
 
 
Latch命中率60%,比较低下
 
 
问题分析:
频繁插入,select查询效率低下,logical read高.
解决问题思路:
减少日志产生,direct insert,parallel,降低latch pct miss(提高cache buffer chains),提升写数据进程(Mysql不能动态调节)
 
解决办法:
1)SQL优化(一)
创建查询对应索引,搜集统计信息(histogram),添加hint
2)SQL优化(二)
调节insert插入
insert   /*+ append parallel  */  into acctrans_account(account_no, user_id, account_alias, account_titleId, independent_account_no, title_name, balance_direction, currency, balance, account_type, STATUS, paymodel, credit_amount, credit_balance, freeze_amount, system_amount, memo, raw_add_time, history_payee, history_payer, history_deposit, history_withdraw, history_deposit_back, history_withdraw_back) values (:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15, :16, :17, :18, :19, :20, :21, :22, :23, :24) 
 
 3)添加dbwr进程数默认为8,增加到16
 
4)减少cache buffers chains争用(略)
 
 
结果:
1插入效率:900+rows/s,之前仅仅为20row/s,提升45倍
2Latch命中率:(有一定提升,还有较大的提升空间)
latch_hitratio
—————
        84.87 %
 
3.
4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5