Where did the space on the Confluence server go? Or Confluence statistics on attachments

Have you ever run out of space on your Confluence server and don't know who downloads attachments the most?

To find out, you need access to the PostgreSQL confluence database.

With the help of an SQL query to the PostgreSQL database, you can find out useful statistics on Confluence.

Total size of all attachments in Confluence:

SELECT s.spaceid,
       s.spacename,
       sum(LONGVAL)
FROM contentproperties c
JOIN content co ON c.contentid = co.contentid
JOIN spaces s ON co.spaceid = s.spaceid
WHERE c.contentid IN
    (SELECT contentid
     FROM content
     WHERE contenttype = 'ATTACHMENT')
  AND c.propertyname = 'FILESIZE'
GROUP BY s.spaceid
ORDER BY SUM DESC
LIMIT 5;

Output (spacename replaced):

Where did the space on the Confluence server go? Or Confluence statistics on attachments

Pages with the most historical versions in the confluence:

SELECT title,
       MAX(VERSION)
FROM content
WHERE contenttype = 'PAGE'
GROUP BY title
ORDER BY 2 DESC
LIMIT 5;

Conclusion:

Where did the space on the Confluence server go? Or Confluence statistics on attachments

Largest attachment files in your Confluence instance

SELECT DISTINCT c.contentid,
                c.title AS attachmentTitle,
                u.username AS uploadedBy,
                co.title AS pageTitle,
                cn.longval AS bytes
FROM CONTENT AS c
JOIN USER_MAPPING AS u ON u.user_key = c.creator
JOIN CONTENT AS co ON c.pageid = co.contentid
JOIN CONTENTPROPERTIES AS cn ON cn.contentid = c.contentid
WHERE c.contenttype = 'ATTACHMENT'
  AND cn.longval IS NOT NULL
ORDER BY cn.longval DESC
LIMIT 5;

Conclusion:

Where did the space on the Confluence server go? Or Confluence statistics on attachments

Number of pages in the cart and total pages in the cart per space:


SELECT Count(content.contentid) AS number_of_trashed_pages,
       Pg_size_pretty(SUM(Pg_column_size(bodycontent.BODY))) AS trash_total_size,
       spaces.spacename AS space_name
FROM bodycontent
INNER JOIN content ON (content.contentid = bodycontent.contentid)
INNER JOIN spaces ON (content.spaceid = spaces.spaceid)
WHERE bodycontent.contentid IN
    (SELECT contentid
     FROM content
     WHERE content_status = 'deleted'
       AND contenttype = 'PAGE')
GROUP BY space_name
ORDER BY trash_total_size
LIMIT 5;

Conclusion:

Where did the space on the Confluence server go? Or Confluence statistics on attachments

Total size of attachments uploaded by each user on all pages

SELECT u.lower_username,
       sum(cp.longval) AS "size"
FROM content c1
JOIN content c2 ON c1.contentid = c2.pageid
JOIN user_mapping u ON c1.creator=u.user_key
JOIN contentproperties cp ON c2.contentid = cp.contentid
WHERE c2.contenttype='ATTACHMENT'
GROUP BY u.lower_username
ORDER BY sum(cp.longval) DESC
LIMIT 5;

Conclusion:

Where did the space on the Confluence server go? Or Confluence statistics on attachments

PS Supplement the post with useful SQL queries for Confluence

Source: habr.com

Add a comment