如何禁用归档索引并从表中删除其内容?

萨利赫萨马拉
2023-02-26 20:14

indexed_archives_entries数据库表是归档文件中包含的文件的索引,其内容可通过执行归档搜索(以前称为类搜索)进行搜索。当一个新的归档文件被部署到Artifactory时,它的内容被索引并更新表。这些归档文件可以是.jar, .war, .zip,或其他归档类型,如文件中定义的:

$ {ARTIFACTORY_HOME} / etc / mimetypes.xml

每当Artifactory的垃圾收集删除已索引的工件时,该表中的条目就会被删除。因此,这个表不会保存不存在的工件的索引。
我们已经注意到,在许多情况下,归档索引相关的表可能会占用大约40%的DB存储空间,并在删除工件等相关操作期间增加DB CPU的使用。因此,我们建议在不使用此功能时禁用此功能。
要验证该特性是否在您的组织中使用,您可以检查Artifactory请求日志并搜索到以下路径的请求:

/ api /搜索/存档
/ ui / api / v1 / ui / artifactsearch /类

这将表明正在使用该特性,以及请求的来源。

若要禁用特定文件类型的存档索引,请使用以下指令。
禁用归档索引

Artifactory 7.倍

使用这个指令在管理设置界面中禁用该功能。

Artifactory 6.倍

编辑mimetypes.xml并将文件类型的index属性的值从true更改为false。禁用特定mimetype的未来索引将不会从DB中删除现有索引。

禁用存档索引功能(两个版本)后清理未使用的表

下面是从数据库中删除索引并只重新索引必要的mimetype的步骤。注意:由于这些指令将导致从数据库中删除,请谨慎正确执行这些步骤,以避免造成损坏的可能性:
1.使用上面部分中的步骤禁用存档索引功能
2.关闭Artifactory
3.使用以下SQL查询截断存档相关表的所有内容:

截断indexed_archives_entries;
TRUNCATE indexed_archives CASCADE;
TRUNCATE archive_names CASCADE;
TRUNCATE archive_paths CASCADE;

4.开始Artifactory

可选:恢复归档索引数据
如果你想在修改mimetypes.xml和清理上面的表之后恢复档案索引数据,你可以运行下面的REST查询来计算你的档案索引:

curl -X POST -uadmin:密码https://{server_name}:{port_number}/artifactory/api/archiveIndex/*

您可以指定单个存储库密钥,也可以使用星号(*)来触发所有本地存储库和缓存存储库的计算。

注意:这个REST查询需要一个admin用户。此外,这个过程可能是资源密集型的。因此,我们建议在您的服务器负载不重时启动它。我们还建议您一次重新索引一个存储库,以限制您给系统带来的压力。