在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

MySQL中怎么实现快速插入数据

95次阅读
没有评论

共计 2035 个字符,预计需要花费 6 分钟才能阅读完成。

自动写代码机器人,免费开通

MySQL 中怎么实现快速插入数据,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

MySQL 如何快速插入数据

1. 尽量减小导入文件大小

首先给个建议,导出导入数据尽量使用 MySQL 自带的命令行工具,不要使用 Navicat、workbench 等图形化工具。特别是大数据量的时候,用 MySQL 自带的命令行工具导出和导入比用 Navicat 等图形化工具要快数倍,而且用 Navicat 等图形化工具做大数据量的操作时很容易卡死。下面简单介绍下怎么用 MySQL 自带的命令行工具做导入导出。

#导出整个实例

mysqldump-uroot-pxxxxxx–all-databases all_database.sql

#导出指定库

mysqldump-uroot-pxxxxxx–databasestestdb testdb.sql

#导出指定表

mysqldump-uroot-pxxxxxxtestdbtest_tb test_tb.sql

#导入指定 SQL 文件 (指定导入 testdb 库中)

mysql-uroot-pxxxxxxtestdb

导入的 SQL 脚本内容大多是先建库建表,然后插入数据,其中耗时最长的应该是 insert 插入数据了。为了减小文件大小,推荐使用扩展插入方法,即多行一起批量 insert,类似这样:insertintotable_namevalues(),(),(),…,();。使用扩展插入比一条条插入,文件大小要小很多,插入速度要快好几倍。使用 mysqldump 导出的文件默认是使用批量插入的方法,导出时可使用 –skip-extended-insert 参数改为逐条插入。

可以看出,使用扩展插入的 SQL 脚本导入大概需要 10 分钟左右,而一条条插入的 SQL 脚本导入时间过长,大概 1 个小时仍然没有导完,一个 2 个多 G 的文本导入一个多小时仍未结束,等不及的笔者就手动取消了不过还是可以看出多条一起 insert 比一条条插入数据要节省数倍的时间。

2. 尝试修改参数加快导入速度

在 MySQL 中,有一对大名鼎鼎的“双一”参数,即 innodb_flush_log_at_trx_commit 与 sync_binlog。为了安全性这两个参数默认值为 1,为了快速导入脚本,我们可以临时修改下这两个参数,下面简单介绍下这两个参数:

innodb_flush_log_at_trx_commit 默认值为 1,可设置为 0、1、2

如果 innodb_flush_log_at_trx_commit 设置为 0,logbuffer 将每秒一次地写入 logfile 中,并且 logfile 的 flush(刷到磁盘) 操作同时进行. 该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。如果 innodb_flush_log_at_trx_commit 设置为 1,每次事务提交时 MySQL 都会把 logbuffer 的数据写入 logfile,并且 flush(刷到磁盘) 中去. 如果 innodb_flush_log_at_trx_commit 设置为 2,每次事务提交时 MySQL 都会把 logbuffer 的数据写入 logfile. 但是 flush(刷到磁盘) 操作并不会同时进行。该模式下,MySQL 会每秒执行一次 flush(刷到磁盘) 操作。

sync_binlog 默认值为 1,可设置为 [0,N)

当 sync_binlog=0,像操作系统刷其他文件的机制一样,MySQL 不会同步到磁盘中去而是依赖操作系统来刷新 binarylog。当 sync_binlog=N(N 0),MySQL 在每写 N 次二进制日志 binarylog 时,会使用 fdatasync() 函数将它的写二进制日志 binarylog 同步到磁盘中去。

MySQL 如何快速插入数据

这两个参数可以在线修改,若想快速导入,可以按照下面步骤来操作:

#1. 进入 MySQL 命令行临时修改这两个参数

setglobalinnodb_flush_log_at_trx_commit=2;

setglobalsync_binlog=2000;

#2. 执行 SQL 脚本导入

mysql-uroot-pxxxxxxtestdb

#3. 导入完成再把参数改回来

setglobalinnodb_flush_log_at_trx_commit=1;

setglobalsync_binlog=1;

还有另外一种场景是你的需求是新建从库,或者是不需要产生 binlog,这时候导入 SQL 脚本时可以设置暂时不记录 binlog,可以在脚本开头增加 setsql_log_bin=0; 然后再执行导入,这样速度会进一步加快。如果你的 MySQL 实例没有开启 binlog 则不需要再执行该语句了。

关于 MySQL 中怎么实现快速插入数据问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2035字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 韩国免费高清一级毛片性色 | 偷窥村妇洗澡毛毛多 | 成人第一页 | 国产舐足视频在线观看 | 91精品91久久久 | 久久丫精品国产亚洲av | 国产福利在线小视频 | 北条麻妃二区 | 亚洲欧美不卡 | 久久久久久久久久久久久9999 | 国产伦精品一区二区三区视频金莲 | 国产精品午夜小视频观看 | 免费观看的av在线播放 | 夜色阁亚洲一区二区三区 | 艳z门照片无码av | 日韩一区二区三区电影 | 亚洲精品天堂成人片av在线播放 | 欧美日韩视频在线一区二区 | 日本-区二区三区免费精品 日本全黄录像视频 | 99久久综合精品五月天 | 午夜网站入口 | 日韩欧美精品综合一区二区三区 | 色久在线| 40岁成熟女人牲交片20分钟 | 国内自拍网红在综合图区 | 搡老女人老妇女老熟妇 | 破处一级片 | 欧美一区二区三区男人的天堂 | 中文字幕不卡在线播放 | 色婷婷在线影院 | 中文字幕一区二区三区在线观看 | 亚洲av中文无码乱人伦在线观看 | 国产亚洲无线码一区二区 | 青青青爽在线视频观看 | 热99这里只有精品 | 国产在线观看网站 | 亚洲天堂99 | 精品乱码一区二区三区在线 | 欧美一区二区三区不卡免费 | 一本高清在线视频 | 国产黄大片在线观看 |