x射线:解决x射线DB磁盘空间问题
本文将帮助您执行Xray DB磁盘空间问题的基本/初始故障排除。
我们知道,Xray DB是资源密集型的,所有与Xray应用程序相关的数据都存储在Xray DB服务器上,而不是在Xray应用程序服务器上。
所以在设置x射线时,请参考我们的系统需求wiki页面并相应地为Xray DB服务器设置资源,Xray2022世界杯阿根廷预选赛赛程 DB的大小会随着每天的增量DB同步而不断增加,这是基于工件数量或构建或发布包大小的索引和扫描。
在某些情况下,我们看到DB磁盘大小持续快速增加,下面是必须遵循的基本/初始故障排除。
- 首先,我们需要检查哪些表使用SQL查询占用了更多的磁盘空间,下面是示例SQL中的一个postgres维基它返回数据库中的表,其中它们使用的空间是从使用最多的表(前10位)排序的。
选择
Nspname || '。|| relname AS“relation”,
pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size"
从
pg_class C
左连接
pg_namespace N
ON (N.oid = C.relnamespace)
在哪里
nspname不在
(
“pg_catalog”,
“information_schema”
)
AND C.relkind <> 'i'
AND nspname !~ '^pg_toast'
命令
pg_total_relation_size(C.oid) DESC LIMIT 10;
在正常的PostgreSQL操作下,由于更新而被删除或过期的元组不会从表中物理移除——它们会一直存储在表中,直到VACUUM命令发出。VACUUM释放“死”元组占用的空间。因此,有必要定期执行VACUUM,特别是对于经常更改的表。
要查看死亡元组的信息,以及在PostgreSQL DB Server中为特定DB的每个表运行vacuum / autovacuum时,连接到DB并运行以下查询:
选择
schemaname,
relname,
n_tup_ins,
n_tup_upd,
n_tup_del,
n_live_tup,
n_dead_tup,
last_vacuum,
last_autovacuum,
last_analyze,
last_autoanalyze
从
pg_stat_all_tables
在哪里
Schemaname = 'public'
命令
n_dead_tup desc;
获取一个表列表(从上面的SQL查询中),这些表要么从未被分析过,要么是很久以前被分析过的,要么是自上次收集DB统计信息和真空运行以来发生了很多更改的。调优autovacuum PostgreSQL进程,确保表或其索引更改的频率越高,执行vacuum和分析的频率就越高。
要收集数据库统计信息,并对PostgreSQL数据库实例中特定数据库的所有对象进行真空(常规的,而不是FULL)操作,使用以下命令:vacuumdb -h 上面的命令将在4个并行线程中运行常规真空分析。
如果上面的步骤没有帮助,那么请与DBA合作,在Xray DB服务器上运行Full Vacuum,这可能会清除陈旧的空间和死元组并回收空间。建议在运行Full Vacuum时停止x射线应用程序,因为它可能会延迟一些正在进行的索引作业,并且如果在构建期间有任何触发按需扫描的管道,则可能会对您造成影响。否则,由于没有启用块下载,它应该不会对Artifactory的使用产生直接影响。
在这种情况下,如果上面的建议都没有帮助,那么请通过上面的SQL查询输出联系JFrog支持。
