环境:
mysqldump -uroot -p123 test tb1 >/home/z.txt
在生成的z.txt里面,会有1个或多个insert into语句。问题:
dump文件里面的insert语句的个数由什么决定的?现在知道肯定不是记录条数,和记录的字段类型有关系。

解决方案 »

  1.   

    max_allowed_packet原来1M,备份出来有45个INSERT语句
    改成2M,重启服务,备份出来,还是45个INSERT语句
      

  2.   

    应该是1M大小一个insert刚才找了几个单表备份的文件,文件大小除以insert个数=1Mcat xxxxx | grep -i 'insert into' | wc -l
      

  3.   


    我测试时用varchar类型的字段,单字段表测试,也是1M每个INSERT
    但是2字段的int类型的表,就不是1M了,是667K一个INSERT.
      

  4.   

    应该是mysqldump --net_buffer_length这个参数控制的
      

  5.   

    顶!
    把源码这个判断的段落截出来。if (extended_insert)
          {
            ulong row_length;
            dynstr_append_checked(&extended_row,")");
            row_length= 2 + extended_row.length;
            if (total_length + row_length < opt_net_buffer_length)
            {
              total_length+= row_length;
              fputc(',',md_result_file);            /* Always row break */
              fputs(extended_row.str,md_result_file);
            }
            else
            {
              if (row_break)
                fputs(";\n", md_result_file);
              row_break=1;                          /* This is first row */          fputs(insert_pat.str,md_result_file);
              fputs(extended_row.str,md_result_file);
              total_length= row_length+init_length;
            }
            check_io(md_result_file);
          }
      

  6.   

    长度。SQL语句的最大长度有限制。