mysql - 将 blob 列从 mysql dB 导出到磁盘并用新文件名替换
问题描述
所以我正在研究一个遗留数据库,不幸的是数据库的性能非常慢。在少于 10000 条记录的表中,简单的选择查询最多可能需要 10 秒。
所以我试图调查问题并发现删除他们用来存储文件(主要是视频和图像)的列可以解决问题并大大提高性能。
除了添加适当的索引外,我还能够运行与过去需要 10-15 秒才能在 1 秒内运行的完全相同的查询。
所以我的问题是。是否有任何现有的工具或脚本可以用来帮助我从数据库中导出这些 blob(视频)并将其保存到磁盘并使用文件系统上的新文件名/路径更新行?
如果没有,是否有任何适当的方法来优化数据库,以便这些 blob 不会对性能产生太大影响?
提示使用此数据库的某些客户端使用高级 orm,因此我们对用于获取行及其关系的查询 orm 没有太多控制。所以我不能直接优化查询。
解决方案
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
推荐阅读
- javascript - 传统的 angularjs 语法到 es6 语法以便迁移
- smtpclient - 发送 SMTP 电子邮件的 Powershell 脚本失败
- r - r中数据帧分位数计算中的唯一中断错误
- php - 无法访问 URL:HTTP/1.1 400 Bad URI
- datetime - 如何修改 Microsoft SQL Server 中的日期时间格式?
- c - 在 C 中使用 Go 切片
- java - 比较两个 ArrayList
基于共同类属性的不同类型 - wix - WiX 安装程序 - 在 UAC 提示后,LocalAppDataFolder 的子项安装到错误的位置
- javascript - 如何防止尾随内容与标签内容重叠?
- azure - 使用 Python 监视 Azure 虚拟机规模集 (VMSS) 中的实例