• ADADADADAD

    如何进行MySQL批量insert效率对比[ mysql数据库 ]

    mysql数据库 时间:2024-11-26 22:10:22

    作者:文/会员上传

    简介:

    MySQL批量insert效率对比事例如下:[root@BDMYSQL-200-104dumpdir]#morephone_area_new.sqlINSERTINTO`phone_area_new`VALUES('1302357','江苏省','江苏

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    MySQL批量insert效率对比事例如下:
    [root@BDMYSQL-200-104dumpdir]#morephone_area_new.sqlINSERTINTO`phone_area_new`VALUES('1302357','江苏省','江苏-南通','南通');INSERTINTO`phone_area_new`VALUES('1302358','江苏省','江苏-南通','南通');INSERTINTO`phone_area_new`VALUES('1302359','江苏省','江苏-南通','南通');INSERTINTO`phone_area_new`VALUES('1302360','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1302361','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1302362','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1302363','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1302364','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1302365','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1302366','浙江省','浙江杭州','杭州');INSERTINTO`phone_area_new`VALUES('1301743','贵州省','贵州-贵阳','贵阳');INSERTINTO`phone_area_new`VALUES('1301744','贵州省','贵州-安顺','安顺');INSERTINTO`phone_area_new`VALUES('1301745','贵州省','贵州-贵阳','贵阳');INSERTINTO`phone_area_new`VALUES('1301746','贵州省','贵州-贵阳','贵阳');INSERTINTO`phone_area_new`VALUES('1301747','贵州省','贵州-贵阳','贵阳');INSERTINTO`phone_area_new`VALUES('1301748','贵州省','贵州-贵阳','贵阳');INSERTINTO`phone_area_new`VALUES('1301749','贵州省','贵州-遵义','遵义');INSERTINTO`phone_area_new`VALUES('1301750','河南省','河南-焦作','焦作');--More--(0%)
    行数大概有271255行:
    [root@BDMYSQL-200-104dumpdir]#wc-lphone_area_new.sql271255phone_area_new.sql
    如果不合并insert大概需要3个小时左右才导入完,这样很悲剧,现在我们针对合并数量进行对比

    1. 全并1000条数据首先进行文本处理

    [root@BDMYSQL-200-104dumpdir]#sed':a;N;s/;\r\?\n[^(]*/,/;0~1000!ba'phone_area_new.sql>mm.sql

    清除表中数据

    system@localhost21:01:[netdata]>truncatetablephone_area_new;QueryOK,0rowsaffected(0.20sec)

    测试导入数据

    [root@BDMYSQL-200-104dumpdir]#timemysqlnetdata<mm.sqlreal0m19.028suser0m0.155ssys0m0.008s

    速度惊人,尽然只需要19S2. 全并5000条数据操作之前需要清理数据

    system@localhost21:01:[netdata]>truncatetablephone_area_new;QueryOK,0rowsaffected(0.20sec)

    合并数据

    [root@BDMYSQL-200-104dumpdir]#sed':a;N;s/;\r\?\n[^(]*/,/;0~5000!ba'phone_area_new.sql>mm.sql

    测试导入数据

    [root@BDMYSQL-200-104dumpdir]#timemysqlnetdata<mm.sqlreal0m8.634suser0m0.151ssys0m0.008s

    竟然只要8S,还能不能更快2. 全并7000条数据操作之前需要清理数据

    system@localhost22:16:[netdata]>truncatetablephone_area_new;QueryOK,0rowsaffected(0.24sec)

    合并数据

    [root@BDMYSQL-200-104dumpdir]#sed':a;N;s/;\r\?\n[^(]*/,/;0~7000!ba'phone_area_new.sql>mm.sql

    注释这里做合并花了十几秒导入数据

    [root@BDMYSQL-200-104dumpdir]#timemysqlnetdata<mm.sqlreal0m7.290suser0m0.146ssys0m0.011s

    7S,还能不能更快2. 全并8000条数据操作之前需要清理数据

    system@localhost22:20:[netdata]>truncatetablephone_area_new;QueryOK,0rowsaffected(0.20sec)

    合并数据

    [root@BDMYSQL-200-104dumpdir]#sed':a;N;s/;\r\?\n[^(]*/,/;0~8000!ba'phone_area_new.sql>mm.sql

    导入数据

    [root@BDMYSQL-200-104dumpdir]#timemysqlnetdata<mm.sqlreal0m7.477suser0m0.144ssys0m0.012s
    批量提交数跟硬件IO性能有很大关系,硬件IO越好批量提交数可以设置高点
    如何进行MySQL批量insert效率对比.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysqlinsert