首页 > 解决方案 > 将 blob 列从 mysql dB 导出到磁盘并用新文件名替换

问题描述

所以我正在研究一个遗留数据库,不幸的是数据库的性能非常慢。在少于 10000 条记录的表中,简单的选择查询最多可能需要 10 秒。

所以我试图调查问题并发现删除他们用来存储文件(主要是视频和图像)的列可以解决问题并大大提高性能。

除了添加适当的索引外,我还能够运行与过去需要 10-15 秒才能在 1 秒内运行的完全相同的查询。

所以我的问题是。是否有任何现有的工具或脚本可以用来帮助我从数据库中导出这些 blob(视频)并将其保存到磁盘并使用文件系统上的新文件名/路径更新行?

如果没有,是否有任何适当的方法来优化数据库,以便这些 blob 不会对性能产生太大影响?

提示使用此数据库的某些客户端使用高级 orm,因此我们对用于获取行及其关系的查询 orm 没有太多控制。所以我不能直接优化查询。

标签: mysqlblobdbm

解决方案


SELECT column FROM table1 WHERE id = 1 INTO DUMPFILE 'name.png';

这条路怎么样?

这些也是INTO_OUTFILE代替INTO_DUMPFILE

13.2.10.1 SELECT ... INTO 语句 SELECT ... INTO 形式的 SELECT 允许将查询结果存储在变量中或写入文件:

SELECT ... INTO var_list 选择列值并将它们存储到变量中。

SELECT ... INTO OUTFILE 将选定的行写入文件。可以指定列和行终止符以产生特定的输出格式。

SELECT ... INTO DUMPFILE 将单行写入文件而不进行任何格式化。

链接:https ://dev.mysql.com/doc/refman/8.0/en/select-into.html

链接:https ://dev.mysql.com/doc/refman/8.0/en/select.html


推荐阅读