性能优化:解决大量相同MD5文件下载、预览、删除时可能导致的慢SQL问题。

This commit is contained in:
刘小平 2024-11-13 19:28:26 +08:00
parent a2adf3b411
commit 0cb4d9f3e3

View File

@ -500,9 +500,10 @@ public class StorageEngineServiceImpl implements StorageEngineService {
FileMetadataInfoDTO fileMetadataInfo = new FileMetadataInfoDTO();
fileMetadataInfo.setFileMd5(metadata.getFileMd5());
List<FileMetadataInfoVo> metadataList = metadataRepository.list(fileMetadataInfo);
fileMetadataInfo.setIsFinished(Boolean.TRUE);
FileMetadataInfoVo fileMetadataInfoVo = metadataRepository.one(fileMetadataInfo);
if (CollUtil.isEmpty(metadataList)) {
if (null == fileMetadataInfoVo) {
// 当不存在任何该MD5值的文件元数据时删除物理文件
minioS3Client.removeObject(metadata.getStorageBucket(), metadata.getStoragePath() + "/" + metadata.getFileMd5());
if (Boolean.TRUE.equals(metadata.getIsPreview())) {
@ -524,9 +525,9 @@ public class StorageEngineServiceImpl implements StorageEngineService {
FileMetadataInfoDTO fileMetadataInfo = new FileMetadataInfoDTO();
fileMetadataInfo.setFileKey(fileKey);
// 取得md5元数据
List<FileMetadataInfoVo> fileMetadataInfoVoList = metadataRepository.list(fileMetadataInfo);
FileMetadataInfoVo fileMetadataInfoVo = metadataRepository.one(fileMetadataInfo);
for (FileMetadataInfoVo fileMetadataInfoVo : fileMetadataInfoVoList) {
if ( null!= fileMetadataInfoVo ) {
if (Boolean.FALSE.equals(fileMetadataInfoVo.getIsPrivate()) || fileMetadataInfoVo.getCreateUser().equals(userId)) {
return fileMetadataInfoVo;
}