Uh oh!
There was an error while loading. Please reload this page.
perf(preview): Split preview data to new table - #54543
Conversation
Altahrim
left a comment
There was a problem hiding this comment.
Quick thoughts on the new table
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
43b105b to
0447f56Compare663dfd5 to
e55c56dComparef6ddec7 to
24dc8a1CompareCarlSchwan
commented
Sep 1, 2025
@icewind1991 some questions for you :)
|
Possible performance regression detected Show Output |
1 similar comment
Possible performance regression detected Show Output |
9b52d71 to
7d3c7e8Compare7d3c7e8 to
296b349CompareUh oh!
There was an error while loading. Please reload this page.
296b349 to
f90075fCompareSigned-off-by: Carl Schwan <carl.schwan@nextcloud.com>
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
This work similarly to the move preview job to migrate the previews to the new DB table and also reuse some code. So when we are finding files in appdata/preview, try adding them to the oc_previews table and delete them from the oc_filecache table. Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
Allow to quickly query all the files from a specific mimetype like in the ResetRenderedTexts command. Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
b1c9a14 to
9b63d58Compare9b63d58 to
12b77ebCompare12b77eb to
f91ea9eCompareAnd move it to a different table so that we don't have to pay the storage cost when not using it (most of the times). Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
Simplify logic Signed-off-by: Carl Schwan <carl.schwan@nextcloud.com>
f91ea9e to
fed7a33CompareUh oh!
There was an error while loading. Please reload this page.
szaimen
commented
Oct 8, 2025
🎉🎉🎉🎉🎉 |
| if (!$schema->hasTable('preview_versions')) { | ||
| $table = $schema->createTable('preview_versions'); | ||
| $table->addColumn('id', Types::BIGINT, ['autoincrement' => true, 'notnull' => true, 'length' => 20, 'unsigned' => true]); | ||
| $table->addColumn('file_id', Types::BIGINT, ['notnull' => true, 'length' => 20, 'unsigned' => true]); |
There was a problem hiding this comment.
Uneducated guess, but an this smells like it will be the primary column to look up rows. Add an index?
There was a problem hiding this comment.
The mapper confirms that an index on file_id+version would be beneficial :)
| /** | ||
| * | ||
| */ | ||
| #[CreateTable(table: 'preview', description: 'Holds the preview data')] |
| * | ||
| */ | ||
| #[CreateTable(table: 'preview', description: 'Holds the preview data')] | ||
| #[CreateTable(table: 'preview_locations', description: 'Holds the preview location in an object store')] |
Summary
The new oc_previews table is optimized for storing previews and should decrease significantly the space taken by previews in the filecache table.
This attend to reuse the IObjectStore abstraction over S3/Swift/Azure but currently only support one single bucket configuration.
TODO
TODO moved to seperate MR
Checklist
Screenshots before/after for front-end changesShould not contains any visual changes ;)Backports requested where applicable (ex: critical bugfixes)