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
43b105b to
0447f56
Compare
663dfd5 to
e55c56d
Compare
f6ddec7 to
24dc8a1
Compare
|
@icewind1991 some questions for you :)
|
|
Possible performance regression detected Show Output |
1 similar comment
|
Possible performance regression detected Show Output |
9b52d71 to
7d3c7e8
Compare
7d3c7e8 to
296b349
Compare
296b349 to
f90075f
Compare
Signed-off-by: Carl Schwan <carl.schwan@nextclound.com>
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>
* Simplify migration by not moving the actual files and just updating the DB * Don't store the storageid in the preview table as it is not needed * Start adding tests 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>
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
9b63d58
Compare
9b63d58 to
12b77eb
Compare
12b77eb to
f91ea9e
Compare
And 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
fed7a33
Compare
|
🎉🎉🎉🎉🎉 |
| 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 :)
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)