当前位置: 首页 > 科技观察

您将100万条记录插入MySQL需要多长时间?

时间:2023-03-17 14:21:39 科技观察

内容1.多线程插入(单表)2.多线程插入(多表)3.预处理SQL4.多值插入SQL5.事务(N条提交一次)多线程插入(单表)问:为什么多线程插入同一张表会比单线程快?对一个表的写操作不应该同时是互斥的吗?答:在数据中做insert操作时,整体时间分配如下:1.多链接耗时(30%)2.向服务器发送更多查询(20%)3.多解析查询(20%)4、多插入操作(10%*条目数)5、多插入索引(10%*索引数)6、多关闭链接(10%)从这里可以看出真正的耗时的不是操作,而是链接,解析的过程。MySQL在写入阶段专门插入数据,但是插入一条数据还是需要经过解析、计算,最后写入。比如需要给每条记录分配一个自增id,验证主键的唯一键属性,或者其他一些逻辑处理。都需要计算,所以多线程可以提高效率。多线程插入(多表)分区表后使用多线程插入。预处理SQL普通SQL:使用Statement接口执行SQL预处理SQL:使用PreparedStatement接口执行SQL使用PreparedStatement接口可以让数据库预编译SQL语句,以后只需要传入参数,避免数据库编译SQL每次都声明,所以性能更好。多值插入SQL普通插入SQL:INSERTINTOTBL_TEST(id)VALUES(1)多值插入SQL:INSERTINTOTBL_TEST(id)VALUES(1),(2),(3)使用多值插入SQL,SQL语句总长度减少,即网络IO减少,连接数也减少。SQL分析后,数据库可以插入多条数据。Transaction(Nitemssubmittedonce)在一个事务中提交大量的INSERT语句可以提高性能。1.将表的存储引擎改成myisam2.将sql拼接成字符串,每1000条左右提交一次事务。执行多条SQL语句实现数据库事务。mysql数据库,多条sql语句,10w条数据耗时10s左右!