一个问题

zuoxingyu 2011-12-26 04:07:27
环境:
mysqldump -uroot -p123 test tb1 >/home/z.txt
在生成的z.txt里面,会有1个或多个insert into语句。

问题:
dump文件里面的insert语句的个数由什么决定的?现在知道肯定不是记录条数,和记录的字段类型有关系。
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2011-12-26
  • 打赏
  • 举报
回复
长度。SQL语句的最大长度有限制。
zuoxingyu 2011-12-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 rucypli 的回复:]
应该是mysqldump --net_buffer_length这个参数控制的
[/Quote]
顶!
把源码这个判断的段落截出来。

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);
}
rucypli 2011-12-26
  • 打赏
  • 举报
回复
应该是mysqldump --net_buffer_length这个参数控制的
zuoxingyu 2011-12-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 rucypli 的回复:]
应该是1M大小一个insert

刚才找了几个单表备份的文件,文件大小除以insert个数=1M

cat xxxxx | grep -i 'insert into' | wc -l
[/Quote]

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

rucypli 2011-12-26
  • 打赏
  • 举报
回复
应该是1M大小一个insert

刚才找了几个单表备份的文件,文件大小除以insert个数=1M

cat xxxxx | grep -i 'insert into' | wc -l
zuoxingyu 2011-12-26
  • 打赏
  • 举报
回复
max_allowed_packet

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

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧