MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 1531|回复: 0
打印 上一主题 下一主题

[性能优化] 请教大神帮忙分析:生成随机数插入很慢,5个索引算多吗?

[复制链接]
跳转到指定楼层
1#
发表于 2017-5-4 10:52:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 jimy1 于 2017-5-4 10:56 编辑

go语言写的for循环,每次循环生成5个值(对应5个索引字段)加上25个固定值拼成SQL语句,执行插入。
不加索引(30字段,也是循环生成随机值插入)用/mysqladmin -u -p extended-status -r -i1|grep -i Com_insert查看结果平均在3000每秒,插入100万数据时间为5分钟多一点:

sudo  /usr/bin/mysqladmin -u -p extended-status -r -i1|grep -i Com_insert
| Com_insert                                    | 1022904                                          |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2318                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 4003                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2572                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2050                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 3956                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 1902                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 4556                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 4584                                             |
| Com_insert_select                             | 0                                                |

加了5个索引后,用/mysqladmin  extended-status |grep Com_insert 查看每秒在300-600间,插入100万数据为30分钟。(最开始1分钟能到2000左右每秒的插入量)

sudo  /usr/bin/mysqladmin -u -p extended-status -r -i1|grep -i Com_insert
| Com_insert                                    | 29941                                            |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2566                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 3013                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2829                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2083                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 1537                                             |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 2555                                             |
| Com_insert_select                             | 0                                                |

| Com_insert_select                             | 0                                                |
| Com_insert                                    | 951                                              |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 263                                              |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 506                                              |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 448                                              |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 395                                              |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 315                                              |
| Com_insert_select                             | 0                                                |
| Com_insert                                    | 364                                              |
| Com_insert_select                             | 0                                                |

MySQL是5.7.12版本,操作系统是红帽6.1,我感觉太慢了,请各位大神帮忙分析下,谢谢了

代码(50万数据):
  1. for i:=0;i<500;i++{
  2.       go insertUnis(db,"unis")                  //500个go程
  3.     }
  4.     common_package.WgDay.Wait()
  5.     //time.Sleep(2*time.Second)   
  6.     return nil
  7. }
  8. func insert(db *sql.DB, name string){
  9.     sql := ""
  10.     user_name := string(Krand(64,0))         //生成64位的随机数
  11.     session_key:=string(Krand(56,0))          //生成56位的随机数
  12.     nat_ip := string(Krand(15,0))         //生成15位的随机数
  13.     Nas_IP := nat_ip                //56
  14.     frame_ip := nat_ip              //56
  15.     sql = "insert into unis values("+session_key+","+frame_ip+","+user_name+",'ee02:123::af01:9231:df18:8998','ee02:123::/64','0xBF019231DF188998','0xBF019231DF188999','a0:24:7e:68:0c:80','"+Nas_IP+"','40.2M','srunk 6/0/36:33.351 0/0/0/0/0/0',487204,587239,2458787490,'taefawega',2458787585,'20M','bj.com','21M','534111111111111111999253859','EE60-X10311900100000091463d000936','Aa:ef:dd','Eptv','Asfefji','Sefoij','"+nat_ip+"','70.11.69.45',1343,2454,2458787490);"
  16.     _, err := db.Exec(sql)
  17.     if err != nil {
  18.         Log(LL_ERROR, sql, ", err info:", err.Error(), ".")
  19.     }
  20. }
  21. func insertUnis(db *sql.DB, name string){
  22.     for i:=0;i<1000;i++{
  23.     insert(db,name);
  24.     }
  25.     common_package.WgDay.Done()
  26.     return
  27. }
复制代码



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶 踩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-5-3 22:51 , Processed in 0.064573 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表