MYSQL里执行SQL语句"update md51 set mwen=mgwen where id>1”报错:
Error Code: 2013. Lost connection to MySQL server during query
SQL语句没有问题 ,可能是执行超时 因为数据量有点大 两亿多条记录!Innodb 表 求指导!应该改哪些SQL参数!MYSQL 大数据

解决方案 »

  1.   

    update md51 set mwen=mgwen where id>1 order by id limit 0,10000;
    update md51 set mwen=mgwen where id>1 order by id limit 10000,10000;
      

  2.   

    这么大的数据量分段更新,否则对性能的要求是非常高的。
    每次更新的数据量要根据服务器的性能而定。
    update md51 set mwen=mgwen where id>1 order by limit 0,50000
    ....
      

  3.   

    innodb还是myisam?
    2e条大概多少GB?内存多大?如果RAM>数据表体积的话,还有可能通过设置Insert Buffering之类的优化,反之,放弃吧,用order by limit来分批处理。
      

  4.   

    分批更改update md51 set mwen=mgwen where id between 1 and 10000;
    update md51 set mwen=mgwen where id between 10000 and 20000;
    id需要是自增主键
      

  5.   


    为什么我的mysql 不能用 limit 0,10000 这种方式修改啊,是版本限制吗?
      

  6.   

     我的意见是修改 max_allowed_packet的大小,加大你的缓存因为你的语句太占用空间了,缓存里放不下了。
     linux下在my.cnf里[mysqld]下面添加max_allowed_packet = 2GB(具体要多少,把你这条SQL语句放进一个文本里看看占多少)
    win在安装目录下my.ini里最后一行添加。
    请在关闭mysql的情况下操作,修改完后再打开看下是否修改成功(主要是linux)
    然后在命令提示框里输入show VARIABLES like '%max_allowed_packet%';查看是否修改成功