Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Johan Dahlström 33 posts 145 karma points
    14 days ago
    Johan Dahlström
    0

    The umbracoPropertyData table keeps growing

    Hi, I've noticed that dbo.umbracoPropertyData increases in size pretty quickly. We have a fairly new project and it's already getting towards 4GB in size.

    Will Umbraco just keep adding rows or will old rows be removed eventually? If not, how can this be maintained?

  • Roy Berris 53 posts 411 karma points
    1 week ago
    Roy Berris
    0

    I believe this will be fixed with the content version cleanup feature introduced in 9.1.0.

    https://our.umbraco.com/documentation/Fundamentals/Data/Content-Version-Cleanup/

    In 8 versions there was this package: https://our.umbraco.com/packages/website-utilities/unversion/ but it shows it is retired. I do think it should still work for 8 installations tho.

  • Bo Jacobsen 548 posts 2212 karma points
    1 week ago
    Bo Jacobsen
    100

    Hi Johan.

    The history cleanup is introduced in 8.18.0.

    But if you can't upgrade, then unversion as Roy is suggesting is working like a charm.

    If you just wanna do a simple cleanup, where you remove all versions except the last 4. Then you can do this.

    public class UnVersionComponent : IComponent
    {
        private readonly ILogger _logger;
        private readonly IContentService _contentService;
    
        public UnVersionComponent(ILogger logger, IContentService contentService)
        {
            _logger = logger;
            _contentService = contentService;
        }
    
        public void Initialize()
        {
            ContentService.Published += ContentService_Published;
        }
    
        private void ContentService_Published(global::Umbraco.Core.Services.IContentService sender, global::Umbraco.Core.Events.ContentPublishedEventArgs e)
        {
            foreach (var content in e.PublishedEntities)
            {
                var allVersionsToDelete = _contentService.GetVersionsSlim(content.Id, 4, int.MaxValue).ToList();
                foreach (var version in allVersionsToDelete)
                {
                    _logger.Debug<UnVersionComponent>("Deleting version id {VersionId} of content id {ContentId}", version.Id, content.Id);
                    _contentService.DeleteVersion(content.Id, version.Id, false);
                }
            }
        }
    
        public void Terminate() { }
    }
    
  • Johan Dahlström 33 posts 145 karma points
    1 week ago
    Johan Dahlström
    0

    Thanks Bo, I think this is sufficient for my use case

Please Sign in or register to post replies

Write your reply to:

Draft