Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我需要构建一个表,其中包含一个占行大小的 98% 的大 BLOB。但是,此 BLOB 只会暂时保留在行中,并将移动到另一个位置,然后 BLOB 列将设置为 NULL。MySQL 可以重用这个空间还是它总是行的一部分?如果它不能自动重用,是否有另一种方法(比如优化表)可以用来手动回收这个空间?如果没有,我可能需要找到另一种解决方案来处理这组特定的数据。
听起来你肯定会更好地使用 Redis,甚至只是将你的 blob 存储在文件系统上。这实际上是我推荐的;将数据保存在文件中并将文件名放在表中。异步上传到 s3 完成后,将其设置为 null。如果您使用为处理大型对象而优化的文件系统,这总是比插入数据库更快。
Blob 的存储方式不仅取决于数据的长度,还取决于您实际使用的 mysql 版本。删除的行总是可以重用,当后续插入不重用空间时,可以使用优化表恢复。但是优化表会锁定该表。所以你第二次减慢系统速度。