由于内部原因(框架结构),我将许多图像保存在一个带有 mediumBLOB 的表中。
考虑到检索这些图像的查询是以相当低的速率发送的,有没有办法告诉 mysql 将该表从内存中删除?我不想偶尔使用一次内存中的 2GB 表。
有没有办法优化这个?
(注意:如果这有帮助,我可以将此表移动到仅包含此表的新数据库中)
谢谢
由于内部原因(框架结构),我将许多图像保存在一个带有 mediumBLOB 的表中。
考虑到检索这些图像的查询是以相当低的速率发送的,有没有办法告诉 mysql 将该表从内存中删除?我不想偶尔使用一次内存中的 2GB 表。
有没有办法优化这个?
(注意:如果这有帮助,我可以将此表移动到仅包含此表的新数据库中)
谢谢
MySQL 不会为 BLOB 类型生成内存表,因为存储引擎不支持它。
http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html
“某些情况会阻止使用内存中的临时表,在这种情况下,服务器会使用磁盘表来代替:
这意味着您应该将 BLOB 放入不同的表中,并将其他有用的数据保留在 BLOBless 表中,以便优化该表。
将这种表移到单独的数据库中对我来说听起来是一种非常有效的方法。在工作中,我们有一台用于操作内容(订单、目录等)的数据库服务器和一台用于日志(网络日志和电子邮件副本)和媒体(图像、视频和其他二进制文件)的数据库服务器。即使在同一台机器上运行单独的实例也是值得的,因为正如您所提到的,它对缓冲区缓存(或任何您的存储引擎的等价物)进行分区。