本帖最后由 afate 于 2012-08-01 11:06:50 编辑

解决方案 »

  1.   

    query_cache_size=0没打开 查询缓存
      

  2.   

    show processlist看看哪些sql卡住了
      

  3.   


    我看了query_cache_size的介绍。如果出现很多相同查询的情况,查询缓存能提高速度。反之,如果每次查询的内容都不同时,则查询缓存会降低速度! 我们的查询,每次大多是不同的查询内容。所以应该不是这个问题。
    何况,出问题前,也没开缓存,但速度很可以。
      

  4.   

    SHOW PROCESSLIST 贴出来看一下。
      

  5.   

    显示一下进程列表看一下
    show processlist
      

  6.   

    慢查询日志打开没有打开 my.ini ,找到 [mysql] 在其下面添加long_query_time = 2
     log-slow-queries = D:/mysql/logs/slow.log 
      

  7.   


    Id User Host db Command Time State Info
    5878 admin 10.217.150.116:2566 sqlgtsp Query 0 freeing items update gt_trades_13426 set  tid='201176600716791',seller='惊富家居',shiptime='2012-08-0
    5879 admin 10.217.150.116:2567 sqlgtsp Sleep 16 NULL
    5881 admin 10.217.150.116:2569 sqlgtsp Sleep 9 NULL
    5884 admin 10.217.150.116:2572 sqlgtsp Query 0 freeing items update gt_trades_5690 set  tid='200060361432420',seller='精彩你懂的',shiptime='2012-07-28 22:38
    6450 admin 10.217.150.116:4251 sqlgtsp Sleep 886 NULL
    6549 admin 10.217.150.116:2199 sqlgtsp Sleep 262 NULL
    6752 root 127.0.0.1:2964 sqlgtsp Sleep 156 NULL
    6766 admin 10.217.150.116:1967 sqlgtsp Query 0 freeing items update gt_trades_8199 set  seller='aisleep',tid='165597311150904',shipping_id='EW2064
    6768 admin 10.217.150.116:1989 sqlgtsp Query 0 freeing items update gt_trades_6343 set  tid='149033062650623',seller='茵曼',paytime='2012-08-02 10:26:
    6769 admin 10.217.150.116:2005 sqlgtsp Query 0 freeing items update gt_trades_10260 set  seller='良品淘',tid='201308400626794',receiver_state='河南省',r
    6771 admin 10.217.150.116:2010 sqlgtsp Query 0 freeing items update gt_trades_4260 set  seller='易读',tid='165672350933709',last_scan_old='2012-08-02 10:42:59'
    6773 admin 10.217.150.116:2016 sqlgtsp Sleep 213 NULL
    6786 admin 10.217.150.116:4023 sqlgtsp Query 0 Sending data select * from gt_trades_1927 where cat='0'  and status='WAIT_BUYER_PAY'  and created>='2012-07-30 10
    6808 root 127.0.0.1:2966 sqlgtsp Sleep 174 NULL
    6809 root 127.0.0.1:2967 sqlgtsp Query 0 freeing items update gt_sms_send set status=1,sendtime=sysdate() where id = 2413003
    6816 root 127.0.0.1:2968 sqlgtsp Sleep 142 NULL
    6850 admin 10.217.150.116:3785 sqlgtsp Query 0 freeing items UPDATE gt_session_sys SET `data` ='KDT_USER_NICK|s:15:"千选";taobaouser|a:3:{s:4:"nick";s
    6851 root 127.0.0.1:2971 NULL Query 0 NULL show processlist
      

  8.   

    我是楼主,
    我发现了一个现象:
    show processlist的结果:
    如果进程超过15个(个别是20个),mysqld.exe只占用2%CPU, MYSQL查询就相当慢。
    如果进程比较少(特别是只有几个),mysqld.exe就会占用到50%CPU,MYSQL查询会相当快。这样看来,是不是 show processlist 里的查询进程太多了,导致了查询慢? 
    这也不对啊,最多才20多个,对MYSQL来说,应该不多吧? 而且这时CPU却空闲了,好像是mysql罢工了? 
    是不是我的设置有问题?哪位大虾能给解释下。拜谢了!