性能优化:解决大量相同MD5文件创建时可能导致的慢SQL问题。

This commit is contained in:
刘小平 2024-11-13 00:55:21 +08:00
parent 17c7220def
commit 43cbbf08e0

View File

@ -168,22 +168,13 @@ public class StorageServiceImpl implements StorageService {
// 查询MinIO中是否存在相同MD5值的文件 // 查询MinIO中是否存在相同MD5值的文件
FileMetadataInfoDTO fileMetadataInfo = new FileMetadataInfoDTO(); FileMetadataInfoDTO fileMetadataInfo = new FileMetadataInfoDTO();
fileMetadataInfo.setFileMd5(saveDTO.getFileMd5()); fileMetadataInfo.setFileMd5(saveDTO.getFileMd5());
List<FileMetadataInfoVo> alreadyFileList = fileMetadataRepository.list(fileMetadataInfo); fileMetadataInfo.setIsFinished(true);
FileMetadataInfoVo alreadyFile = fileMetadataRepository.one(fileMetadataInfo);
boolean sameMd5 = false; if (null != alreadyFile) {
saveDTO.setStorageBucket(alreadyFile.getStorageBucket());
if (CollUtil.isNotEmpty(alreadyFileList)) { saveDTO.setStoragePath(alreadyFile.getStoragePath());
for (FileMetadataInfoVo fileMetadataInfoVo : alreadyFileList) { }else{
if (Boolean.TRUE.equals(fileMetadataInfoVo.getIsFinished())) {
saveDTO.setStorageBucket(fileMetadataInfoVo.getStorageBucket());
saveDTO.setStoragePath(fileMetadataInfoVo.getStoragePath());
sameMd5 = true;
break;
}
}
}
if (!sameMd5) {
// 新文件时执行写入逻辑 // 新文件时执行写入逻辑
storageEngineService.createFile(saveDTO, fileBytes); storageEngineService.createFile(saveDTO, fileBytes);
} }
@ -215,22 +206,14 @@ public class StorageServiceImpl implements StorageService {
// 查询MinIO中是否存在相同MD5值的文件 // 查询MinIO中是否存在相同MD5值的文件
FileMetadataInfoDTO fileMetadataInfo = new FileMetadataInfoDTO(); FileMetadataInfoDTO fileMetadataInfo = new FileMetadataInfoDTO();
fileMetadataInfo.setFileMd5(saveDTO.getFileMd5()); fileMetadataInfo.setFileMd5(saveDTO.getFileMd5());
List<FileMetadataInfoVo> alreadyFileList = fileMetadataRepository.list(fileMetadataInfo); fileMetadataInfo.setIsFinished(true);
FileMetadataInfoVo alreadyFile = fileMetadataRepository.one(fileMetadataInfo);
boolean sameMd5 = false;
if (CollUtil.isNotEmpty(alreadyFileList)) { if (null != alreadyFile) {
for (FileMetadataInfoVo fileMetadataInfoVo : alreadyFileList) { saveDTO.setStorageBucket(alreadyFile.getStorageBucket());
if (Boolean.TRUE.equals(fileMetadataInfoVo.getIsFinished())) { saveDTO.setStoragePath(alreadyFile.getStoragePath());
saveDTO.setStorageBucket(fileMetadataInfoVo.getStorageBucket()); }else{
saveDTO.setStoragePath(fileMetadataInfoVo.getStoragePath());
sameMd5 = true;
break;
}
}
}
if (!sameMd5) {
// 新文件时执行写入逻辑 // 新文件时执行写入逻辑
storageEngineService.createFile(saveDTO, inputStream); storageEngineService.createFile(saveDTO, inputStream);
} }