日常操作 Mysql 数据库的最佳实践是什么

2023-09-24 13:35:01 +08:00
 RedBeanIce
我的需求

1 ,批量的导入数据,到数据库,可能会有 10000 条 insert 或者 update 的 sql 文件

2 ,同步两个环境的数据库表结构,以及数据库的数据

我的调查
1 ,navicat 在旧款的时候,同步数据库表结构的时,没有全选操作,需要一个个的点击。

2 ,datagrip 的 copy table to 更是一堆 bug ,

3 ,或者是在 navicat 或 datagrip 以查询或者 console(myqsldump)的方式执行 sql ,,都会导致导致卡顿。

请问满足我的需求的话,应该如何选择数据库 GUI 操作软件。
2680 次点击
所在节点    MySQL
14 条回复
cyningxu
2023-09-24 15:20:34 +08:00
mysqldump ?
eDeeraiD0thei6Oh
2023-09-24 16:11:10 +08:00
楼主得补习下基础知识了
RedBeanIce
2023-09-24 17:42:56 +08:00
@cyningxu
额,,直接使用命令行么。
有点难以操作,容我去学习一下。。
RedBeanIce
2023-09-24 17:43:22 +08:00
@eDeeraiD0thei6Oh

比如是哪一些方面呢,我去学习一下。
eDeeraiD0thei6Oh
2023-09-24 17:46:16 +08:00
RedBeanIce
2023-09-24 17:54:13 +08:00
@eDeeraiD0thei6Oh 我不清楚 mysqldump ,或者是从文件导入到 mysql 里面去,能不能解决我的问题。

我印象中,mysqldump 导入几十万条数据时,也会很慢。

我先去试试!!!!!
zirawell
2023-09-24 18:32:30 +08:00
datagrip SQL 导入量比较大的话不能直接在 console 导入,容易卡死;另外导出的话选项里没有勾选可以导出触发器和存储过程的选项,我咨询客服后经过自己实践,目前方案如下:
导出:datagrip 利用 mysqldump 加参数 --routines 可以一同导出存储过程和触发器;
导入:上方菜单栏-run-edit configurations-选择需要导入的数据库和脚本,执行
iseki
2023-09-24 18:52:26 +08:00
不知道 MySQL 有没有 copy ... to stdout 和 copy ... from stdin 这样的命令,我导部分数据时都这么干。表结构一般就靠 dump
zed1018
2023-09-24 19:07:40 +08:00
大批量数据导入建议不要考虑 GUI ,直接做 insert multiple values 的 sql ,然后直接 mysql < in.sql 。
akira
2023-09-24 19:22:42 +08:00
第一步,忘掉 GUI 工具的存在。
captainm
2023-09-25 10:30:11 +08:00
让 Ai 写 SQL 语句
yidinghe
2023-09-25 11:33:28 +08:00
https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html
这是 mysqldump 导出命令的文档,强烈建议仔细过一遍,看看有哪些参数。比如说:

1. 导入的时候可能存在已有的数据,所以希望导出语句为 insert ignore ;
2. 希望多个 insert 语句合并成一条,以减少执行的语句数量;
3. 希望跳过 create table 或 drop table ;
4. 希望导入过程中锁表以保护数据完整性;
5. 希望只导出建表语句,不导出数据;
6. 希望进行流式读取,一边读取一边导出来增加效率

等等等等,mysqldump 其实是个很强大灵活的工具。
Jtyczc
2023-09-25 14:27:27 +08:00
我每次发版改 sql 都导出一次数据库 sql ,然后统一放在文件夹下,这样子我有什么问题可以及时回滚。
sql 文件命名可以是 v1.2_20230909 ,这样版本号是对应服务端的
VersionD
2023-09-25 21:00:20 +08:00
mysql 的最佳实践非常多都是记录在官方 doc 上的,链接楼上老哥贴的那个 dev.mysql.com 的就是,基本上手完之后都会回归命令行的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/976659

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX