首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MySQL语法之union和union all,你使用哪一个?

MySQL语法之union和union all,你使用哪一个?

作者头像
jeanron100
发布于 2021-06-09 02:10:38
发布于 2021-06-09 02:10:38
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

相信有不少同学都看过“DBA随笔”,幕后的作者是我前同事小叶,作为小叶的导师,我教过他正事,也教过一些坏的习惯,不过写笔记这个习惯算是小叶自己开窍了,他已经坚持了很长一段时间了,这股学习劲头值得点赞,圈子就这么大,其实要深耕做点事情靠的还是兴趣和坚持。

小叶的公众号如下:

他性格偏外向,爱讲段子爱划水,当然也喜欢钻研技术,我就默默的关注着他。

//

union和union all,你使用哪一个?

//

这是去年在线上遇到了一个系统负载的问题,问题的内容如下:某个从库上的系统负载从5天前开始,一直处于比较高的状态,磁盘IO也比较高,这里我先截取一部分监控的曲线图:

从监控上不难发现,该环境的系统负载成阶梯状线性提升,从5天前开始,逐渐增高,今天负载已经到达了10以上。磁盘的使用率也是从5天前开始,一直处于100%的状态。使用dstat的方法查看当前磁盘的状态,如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dstat -cdlmrtn --disk-util --top-io --top-latency 1
----total-cpu-usage---- -dsk/total- ---load-avg--- ------memory-usage----- --io/total- ----system---- -net/total- sda--sdb->
usr sys idl wai hiq siq| read  writ| 1m   5m  15m | used  buff  cach  free| read  writ|  date/time   | recv  send|util:util>
  0   1  49  50   0   0|  84M  872k|10.1 10.2 10.2|7365M 4320k 8389M  178M|2178   217 |01-06 14:51:10| 941B 1481B|5.70: 100>
  1   1  46  52   0   0|  84M    0 |10.1 10.2 10.2|7365M 4312k 8390M  177M|2110     0 |01-06 14:51:11|1062B 2202B|23.1: 100>
  1   1  48  50   0   0|  81M 1124k|10.1 10.2 10.2|7365M 4232k 8388M  179M|2145   280 |01-06 14:51:12|1042B 1336B|   0: 100>
  1   1  48  50   0   0|  78M    0 |10.1 10.2 10.2|7365M 4232k 8387M  180M|2087     0 |01-06 14:51:13|4731B 3958B|4.50: 100>
  1   1  47  51   0   0|  84M  980k|10.1 10.2 10.2|7365M 4248k 8384M  183M|2061   220 |01-06 14:51:14|4653B   17k|4.20: 100>
  1   1  55  43   0   0|  82M  952k|10.1 10.2 10.2|7365M 4336k 8385M  182M|2204   186 |01-06 14:51:15|2638B 2844B|1.50: 100>
  1   1  60  38   0   0|  74M   84k|10.1 10.2 10.2|7366M 4260k 8383M  183M|1936  7.00 |01-06 14:51:16|1102B 1356B|6.10: 100>

可以看到,磁盘(dsk/total)的read值非常高,达到了84MB/s,当前磁盘IO资源比较吃紧。

针对这个问题,我把我的分析思路写下来,希望会对大家有所帮助:

01

查看连接情况

登录到该机器上,使用show processlist的命令查看这个MySQL实例的连接情况,可以看到如下的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 mysql--dba_admin@127.0.0.1:sys 11:22:16>>show processlist;
+---------+-----------------+--------------------+--------+---------+---------+-------------------+------------------------------------------------------------------------------------------------------+-----------+---------------+
| Id      | User            | Host               | db     | Command | Time    | State             | Info                                                                                                 | Rows_sent | Rows_examined |
+---------+-----------------+--------------------+--------+---------+---------+-------------------+------------------------------------------------------------------------------------------------------+-----------+---------------+
| 2031512 | srv_datasync_ro | 10.xx.xxx.51:4619  | mygame | Query   |  504168 | removing tmp table| select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |       144 |           144 |
| 2093843 | srv_datasync_ro | 10.xx.xxx.81:51287 | mygame | Query   |  471115 | removing tmp table| select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |       144 |           144 |
| 2259357 | srv_datasync_ro | 10.xx.xxx.31:7982  | mygame | Query   |  384715 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2294662 | srv_datasync_ro | 10.xx.xxx.63:52149 | mygame | Query   |  366218 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2298410 | srv_datasync_ro | 10.xx.xxx.75:31859 | mygame | Query   |  364181 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2421697 | srv_datasync_ro | 10.xx.xxx.78:64434 | mygame | Query   |  298299 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2584289 | srv_datasync_ro | 10.xx.xxx.60:39386 | mygame | Query   |  211911 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2746619 | srv_datasync_ro | 10.xx.xxx.51:28107 | mygame | Query   |  125515 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2906024 | srv_datasync_ro | 10.xx.xxx.54:8190  | mygame | Query   |   39114 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2975370 | srv_datasync_ro | 10.xx.xxx.37:60255 | mygame | Query   |    1643 | executing         | select uid,s,g,t2,m from (select uid,s,g,t2,m from mygame_list_0 union select uid,s,g,t2,m from  |         0 |             0 |
| 2975827 | srv_datasync_ro | 10.xx.xxx.61:36801 | NULL   | Sleep   |    1088 |                   | NULL                                                                                             |         0 |             0 |
+---------+-----------------+--------------------+--------+---------+---------+-------------------+------------------------------------------------------------------------------------------------------+-----------+---------------+                                                                                              |         0 |             0 |

从上面的show processlist结果,可以看到以下几条信息:

1、

1、state列的状态有2种,一种是executing,另外一种是removing tmp table,从这里的状态不难看出,该查询使用了内存临时表

2、time字段的最大值为504168,这个值说明有些select查询已经hang在这里了,time的值代表已经执行了这么多秒(依旧没有拿到结果),我们以id为2031512这一行为例,它的Time值是504168,进行简单的时间单位换算:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select 504168/3600/24;
+----------------+
| 504168/3600/24 |
+----------------+
|     5.83527778 |
+----------------+
1 row in set (0.00 sec)

可以看到,这个连接,其实是5天前的连接了,也就是说,这个SQL已经执行了5天,一直卡在这个removing tmp table的界面没有返回。这样算起来,似乎和发现故障的时间比较吻合,以这个信息为切入点,我问业务方要了下执行的SQL语句。

3、并发的SQL语句看起来都是一样的,只有time字段在递减,这表示之前的一个SQL执行的时间太长了,导致后续的SQL都卡在这里了,由于后续的SQL也进入了executing状态,也占用了一部分MySQL的资源,又反向影响之前的SQL,导致之前的SQL迟迟拿不到返回结果。

02

确认业务方的SQL语句

经过和业务方沟通,拿到了业务方执行的SQL语句,具体的表名字和数据库名字不写了,这里简单说下这个SQL的情况,它是对20个表的一个union查询,类似:

select * from t1 union

select * from t2 union

...

select * from t20;

其中,单表的数据量有200w。所有表加起来在磁盘上的文件大小总共是5G。

使用explain查看执行计划,发现对20个表做的都是全表扫描,最后还有个using temporary table 的字样,也就是使用了临时表。

从这个负载上升的阶梯状图形,大概能猜到,这个任务是每天执行一次,将所有的表数据通过union的方式查到,然后推送给前端。但是很明显,这样的操作使用了内存临时表,导致执行时间过长,是有问题的。

看到这里,系统负载这张图就比较容易看懂了:

每一天的任务还没有执行完成,第二天的任务就来了,这样一天一天累计,系统的负载也就慢慢上来了。

03

尝试修改MySQL部分参数

看到执行的命令迟迟得不到返回,而且可以确定,整个union的过程使用了临时表,于是我习惯性的修改了MySQL的几个参数:

1、调大buffer pool size的值;

2、调整innodb_thread_concurrency值为一个更大的值,让它兼容更多的并发查询数

3、调整tmp_table_size的值,让临时表容量变得更大点儿

等待了数十分钟之后,发现问题依旧没有得到解决。

04

尝试kill这几个查询线程

因为业务方对数据的读取采用的是快照读,所以不牵扯大事务回滚的情况,我使用kill queryid的方法对其中的几条select进行了kill操作,发现一个现象。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
| 2975370 | srv_datasync_ro | 10.xx.xxx.37:60255 | mygame | Query   |    1643 | executing         

kill query 2975370;

| 2975370 | srv_datasync_ro | 10.xx.xxx.37:60255 | Killed | Query   |   1683  | removing tmp table

kill操作之后,状态从query变为killed,连接的状态从executing变为removing tmp table,但是并没有释放连接。

关于kill + queryid这个命令到底做了什么操作,大家可以查看一周前的文档,里面有比较详细的说明。目前我们需要了解该命令的本质是:

0、kill + queryid命令等于kill + connection +queryid

1、它将那个session的状态改为kill_connection,此时MySQL会进行判断,如果一个连接线程的状态为kill_connection,那么MySQL会将其Command列改为killed

2、关掉该查询线程的网络连接,等待innodb识别到该线程的状态为kill_connection,进行资源回收。

05

重启MySQL服务

因为是在从库上进行的SQL操作,而且目前负载过大,磁盘IO打满,整个库几乎处于不可用状态,为了快速解决问题,我直接进行了重启MySQL服务的操作。

注意,如果是主库,请不要直接执行停库动作,除非的你的环境已经有了HA的保障。

重启服务的时候,为了让整个重启的过程更加平滑,可以提前调整参数:innodb_max_dirty_pages_pct.

我们可以使用set global variables的方法临时设置这个参数的值为0,那么就意味着动态的慢慢主动将buffer pool中的脏页刷回磁盘,而不是通过关闭MySQL被动刷新,这个参数的默认值是75,也就是说,最大的脏页最多可以占用buffer_pool中75%空间。我们可以通过查看show engine innodb status命令中的modified db pages,等到这个值很小的时候,我们就可以关闭数据库了,这个时候关闭数据库的速度就会很快。

整个重启过程还算顺利,关闭MySQL和开启MySQL服务分别用了30s左右,整个过程耗时1min左右。重启服务之后,效果还是很明显的,监控如下:

06

对union这个SQL的优化

经过跟业务方进行沟通,发现了这个业务的几个特点:

1、所有的20个表都是状态表,每个表平均200w数据,每天这些数据都会更新和新增,也就是update和insert

2、这个任务每天运行一次,之前每次运行的时长是数个小时,最近数据量增加了,运行时间越来越长。

3、数据是用uid维度进行插入的,理论上不存在重复的数据,注意,这条很关键。

既然不存在重复,那么应用union这个连接方法,似乎就有点不妥。

我们知道,union对两个表进行联合查询的时候,会进行一个去重的操作,而union all进行联合查询的时候,会将所有的数据都给罗列出来。现在看起来,似乎是所有表的数据在提取的时候,有个去重的操作,导致这个SQL的执行时间变长了。为了验证这个过程,我进行了一组测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql yeyztest>>create table test_union (id int);
Query OK, 0 rows affected (0.04 sec)


mysql yeyztest>>insert into test_union values (1),(2),(3);
Query OK, 3 rows affected (0.01 sec)
Records: 3  Duplicates: 0  Warnings: 0


mysql yeyztest>>select 4 as f union select id from test_union;
+------+
| f    |
+------+
|    4 |
|    1 |
|    2 |
|    3 |
+------+
4 rows in set (0.00 sec)


mysql yeyztest>>explain select 4 as f union select id from test_union;
+----+--------------+------------+------------+------+---------------+------+---------+------+------+----------+-----------------+
| id | select_type  | table      | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra           |
+----+--------------+------------+------------+------+---------------+------+---------+------+------+----------+-----------------+
|  1 | PRIMARY      | NULL       | NULL       | NULL | NULL          | NULL | NULL    | NULL | NULL |     NULL | No tables used  |
|  2 | UNION        | test_union | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    3 |   100.00 | NULL            |
| NULL | UNION RESULT | <union1,2> | NULL       | ALL  | NULL          | NULL | NULL    | NULL | NULL |     NULL | Using temporary |
+----+--------------+------------+------------+------+---------------+------+---------+------+------+----------+-----------------+
3 rows in set, 1 warning (0.00 sec)


mysql yeyztest>>explain select 4 as f union all select id from test_union;
+----+-------------+------------+------------+------+---------------+------+---------+------+------+----------+----------------+
| id | select_type | table      | partitions | type | possible_keys | key  | key_len | ref  | rows | filtered | Extra          |
+----+-------------+------------+------------+------+---------------+------+---------+------+------+----------+----------------+
|  1 | PRIMARY     | NULL       | NULL       | NULL | NULL          | NULL | NULL    | NULL | NULL |     NULL | No tables used |
|  2 | UNION       | test_union | NULL       | ALL  | NULL          | NULL | NULL    | NULL |    3 |   100.00 | NULL           |
+----+-------------+------------+------------+------+---------------+------+---------+------+------+----------+----------------+
2 rows in set, 1 warning (0.00 sec)

经过这个测试,可以看到,使用union all的方法进行联合查询的时候,执行计划结果只有2行,是没有using temporary的字样的。也就是说,不会出现内存临时表。而使用union查询的时候,执行计划有3行,而且第三行里面有明显的using temporary table字样,这一点,可能是这个SQL的一个重要优化点。

其实,在MySQL中,还可以使用union distinct来显示的指定union查询去重,union distinct语法和单独union的语法执行结果是一样的,只不是加了distinct之后,更加容易理解。如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> select 1 union select 1 union select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql> select 1 union distinct select 1 union distinct select 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

mysql> select 1 union all select 1 union all select 1;
+---+
| 1 |
+---+
| 1 |
| 1 |
| 1 |
+---+
3 rows in set (0.00 sec)

07

将业务SQL改写为union all的方法重试

经过了上面的测试,跟业务方协商,将SQL改为了union all的方法手工执行了一两次,也就是从:

select * from t1 union

select * from t2 union

...

select * from t20

改为:

select * from t1 union all

select * from t2 union all

...

select * from t20 ;

重新测试这个数据联合查询的SQL,发现执行时间从之前的数个小时变为了7分钟。性能整整提高了好几百倍。

监控图像也变为了:

从这个图像上不难看出,每次执行SQL期间,负载有些许上升,但是整体可控,查询的整个过程呈现周期性。

这个案例给了我几点启发:

业务侧:

1、大表连接查询的时候,尽量不要使用union 的操作,因为union的操作要进行去重,所以会进行重复值的判断,这个判断过程消耗CPU和磁盘IO比较严重

2、可以使用union all的方法代替union的方法,当然,如果表特别大,不建议使用union的方式进行查询,还是建议拆分成单个表进行查询,然后再汇总结果

3、如果表中的字段有时间字段,定时任务取每天的增量数据可能比全量数据更加容易一些。

DB侧:

1、可以使用pt-kill来限制最长查询时间,一旦某个查询超过这个时间阈值,就直接kill掉查询,防止拖垮整个数据库。

2、对于服务器的监控还是需要完善,负载长时间处于较高位置,或者IO util值持续10分钟达到100%,就应该报警,而不是故障驱动,被动发现。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大数据量一次性导入MongoDB
可以看到--type参数,mongoimport命令默认导入的数据文件格式为:JSON,同时也支持csv和tsv格式 本文的原始数据是txt格式,故已经提前利用Python将数据格式转换为JOSN格式。--jsonArray参数在后面需要用到。
WHYBIGDATA
2023/01/31
7000
大数据量一次性导入MongoDB
MongoDB数据导入导出工具详解
Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
Power
2025/03/02
3220
MongoDB备份与恢复
mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。
用户5522200
2019/06/02
1.6K0
MongoDB之mongoexport工具
mongoexport是一个数据导出的工具,使用的时候类似mysql中的select into outfile语法,可以将某个数据库中的数据以json或者csv的格式导出来。
AsiaYe
2021/03/13
2.6K0
mongodb 备份、还原、导出、导入
mongodb数据备份和还原主要分为二种,一种是针对于库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport。
飞奔去旅行
2019/06/13
7K0
MongoDB的备份与恢复
1.1 MongoDB的常用命令 mongoexport / mongoimport mongodump / mongorestore      有以上两组命令在备份与恢复中进行使用。 1.1.1 导出工具mongoexport Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项,也可以根据指定的条件导出数据。    该命令的参数如下: 参数 参数说明 -h 指明数据库宿主机的IP
惨绿少年
2018/03/30
4.6K0
MongoDB学习(六)数据库的备份、还原、导入及导出
2017年02月22日 19:17:51 代码与酒 阅读数 21333 标签: 数据库mongodb备份还原 更多
拓荒者
2019/06/15
5.5K0
MongoDB常用命令大全,概述、备份恢复
还记得MySQL、Redis、PostgreSQL、ClickHouse常用命令及操作吗?如果忘记可以到这里重新温习:MySQL常用命令,Redis常用命令,PostgreSQL常用命令,ClickHouse常用命令,启动、关闭、连接、备份、导入导出。本文重点讲述MongoDB常用命令。
寻求出路的程序媛
2024/07/17
1.6K0
初始Mongodb
Mongodb是非关系型数据库(nosql ),属于文档型数据库数据存储为json类型
切图仔
2022/09/08
6290
初始Mongodb
MongoDB 3.0 导入命令
./mongoimport -h 192.168.77.129 --db test --collection restaurants --drop --file /usr/local/mongodb-linux-x86_64-3.0.6/DW_LABEL_DATAS_1_0.csv
用户3003813
2018/09/06
1K0
MongoDB 3.0 导入命令
mongodb备份和恢复
1、语法:         mongodump -h dbhost -d dbname -o dbdirectory             -h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017             -d: 需要备份的数据库实例,例如:test             -o: 备份的数据存放位置,例如:/home/mongodump/,当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据。
用户6421725
2020/01/31
1.4K0
Mongodb常用命令总结
db.table.insert( {'name':'demo','sex':'m','age':18} );
用户6182664
2019/09/18
7720
mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码
mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码 mongodb数据备份和还原主要二种形式 一种是针对于库的mongodump和mongorestore, 一种是针对库中表的mongoexport和mongoimport。 一,mongodump备份数据库 1,常用命令格 mongodump -h IP --port 端口 -u 用户名 -p 密码 -d 数据库 -o 文件存在路径 如果没有用户谁,可以去掉-u和-p。 如果导出本机的数据库
学到老
2018/03/19
1.1K0
mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码
MongoDB日常运维操作命令小结
总所周知,MongoDB是一个NoSQL非数据库系统,即一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表;而每个集合中可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由一组列标识的实体的集合对应于关系数据库表中的行。下面通过熟悉MongoDB的基本管理命令,来了解MongoDB提供的DBMS的基本功能和行为。 0)MongoDB的安装 [root@centos6-vm01 ~]# curl -O https://fastdl.mongodb.org/linux/m
洗尽了浮华
2018/01/23
7.1K0
mongo备份与恢复工具的对比与说明 原
Mongodb提供了mongodump/mongorestore,mongoexport/mongoimport两套机制进行数据备份和恢复,其中mongodump主要进行整库备份,mongoexport则主要进行数据集导出。
拓荒者
2019/03/11
1.9K0
MongoDB 备份恢复
去年中旬安装过 MongoDB,没有怎么实操,本次将备份相关的操作做一个总结,后续有用到的地方可以回来查看,就比较方便了,有需要的小伙伴也可以收藏一波哦!来看一眼本月 MongoDB 在 DB-Engines 排行榜上霸榜第五依旧不变,如下所示,然后进入今天的正题吧。
JiekeXu之路
2022/05/17
1.9K0
MongoDB 备份恢复
【MongoDB】MongoDB入门(一)基本操作和常用命令
字段名限制:不能以“$”开头;不能包含“.”;“_id”是系统保留的字段,但用户可以自己储存唯一性的数据在字段中。
前端修罗场
2023/10/07
5750
MongoDB导入Shapefile数据
两种解决方案: 一、将整个shapefile转为GeoJSON然后直接导入mongoDB数据库中 首先,将shapefile数据转为WGS84地理坐标,然后使用GDAL的命令行工具ogr2ogr进行格式的转换,转换命令如下: ogr2ogr -f geoJSON continents.json continents.shp 删除生成JSON文件的前两行{ "type": "FeatureCollection",和最后一行}。 最后,使用mongodb的mongoimport工具进行导入: mongoimport --db world --collection continents < continents.json 这样子整个shapefile文件在mongodb中是以一个document存在的。
卡尔曼和玻尔兹曼谁曼
2019/01/22
2K0
CentOS 7下MongoDB 3.6 的安装及基本操作
1.MongoDB是一款跨平台、面向文档的数据库,可以实现高性能,高可用性,并且能够轻松扩展。MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。 在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB可以为Web应用提供可扩展的高性能数据存储解决方案。
星哥玩云
2022/08/17
1.2K0
CentOS 7下MongoDB 3.6 的安装及基本操作
mongodb数据库迁移备份数据
使用mongo自带命令来迁移数据,思路是先导出集合数据再导入到数据库中 导出命令:mongoexport 语法:mongoexport -d dbname -c collectionname -o filepath --type json/csv -f field
Alone88
2020/06/11
2.5K0
相关推荐
大数据量一次性导入MongoDB
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验