2018年4月9日
今天在帮助同事执行mysql数据库导出导入问题时,无意间发现,
一个是通过客户端工具备份数据库,一个是通过mysqldump备份数据库,
结果两者生成的文本相差一倍大小。于是很好奇分别打开看里面的内容,发现客户端导出的文本中,是完完整整的sql;
而mysqldump的文本中sql 是合并的sql,即一个insert 后面带了很多的value,从而大致省了一半的空间。
另外mysqldump对虚拟列完全支持,相反客户端导出的却不能完全支持导入。
所以相比之下,请熟练使用mysqldump工具。
-----------------------------
在用python解析json格式的文本时,转化成入库sql;原本是一个json 对应一个sql;这样就导致大量的insert语句;
对于一个20M的json文本,大概有20w行的数据,结果入库特别慢,初步估计也得要一个小时。这等于一个insert 就立刻commit;
这在oracle里一个提交也是耗时的,mysql 亦同样耗时。所以后来就有了上面mysqldump为啥入库快的应用了。
mysql支持一个insert语句后面values(),(),(); 这其实就优化成一个sql语句了。
通过测试,如果中间有一个()报错,就全部rollback,不会部分commit,部分rollback。
后来通过这种方式,入库效率简直无法比,几秒也就完成解析入库。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24349972/viewspace-2152816/,如需转载,请注明出处,否则将追究法律责任。