mirror of
https://github.com/vrcx-team/VRCX.git
synced 2026-04-06 00:32:02 +02:00
[Feature Request] Periodically (or on demand) perform sqlite PRAGMA optimize for large databases #517
Closed
opened 2026-04-05 16:20:19 +02:00 by MrUnknownDE
·
0 comments
No Branch/Tag Specified
master
v2026.02.11
v2026.01.28
v2026.01.04
v2025.12.06
v2025.11.16
v2025.10.27
v2025.10.11
v2025.09.10
v2025.08.17
v2025.06.30
v2025.05.09
v2025.03.01
v2025.01.31
v2024.12.30
v2024.12.03
v2024.10.25
v2024.10.11
v2024.09.02
v2024.07.29
v2024.06.12
v2024.05.09
v2024.05.11
v2024.03.23
v2024.03.17
v2023.12.24
v2023.11.06
v2023.09.18
v2023.07.30
v2023.06.30
v2023.06.15
v2023.05.01
v2023.02.18
v2022.12.30
v2022.12.08
v2022.11.04
v2022.10.05
v2022.09.09
v2022.08.16
v2022.07.30
v2022.07.13
v2022.05.05
v2022.03.31
v2022.03.12
v2022.02.02
v2021.12.16
v2021.11.04
v2021.10.02
v2021.08.15
v2021.07.08
v2021.05.26
v2021.05.07
v2021.04.04
v2021.03.08
v2021.01.30.1
v2021.01.30
v2021.01.09
v2020.12.13
v2020.10.25
v2020.07.13
v2020.07.12
v2020.04.07
v2020.03.21
v2020.02.01
v2020.01.26
v2019.11.18
v2019.10.31.1
v2019.10.31
v2019.09.26
v2019.09.24
v2019.09.23
v2019.09.04
v2019.08.21
v2019.08.20
v2019.08.17.1
v2019.08.17
Labels
Clear labels
AI
AI
AI
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Bug
Cannot Reproduce
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
In Progress
In Progress
In Progress
In Progress
In Progress
In Progress
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Linux
Needs Discussion
Needs Info
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
Niche
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
PR Welcome
Question
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
Stale
UI
UI
UI
UI
UI
UI
UI
UI
UI
UI
UI
UI
UI
Uninstall Avast
Uninstall Avast
Uninstall Avast
Uninstall Avast
VR
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
Wontfix
i18n
i18n
i18n
i18n
i18n
i18n
macOS
No Label
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Done
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Feature
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
MrUnknownDE
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/VRCX#517
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @TapGhoul on 3/4/2025
Explain in detail what your suggested feature would be used for.
I've seen instances of vrcx with years worth of data which take a substantial amount of start-up time. Having the optimize pragma execute might be useful.
A one-time "force optimize" button to trigger optimize with mask
0x10002might be nice in settings, and otherwise run with the bitmask0xfffe(the default) on program startup/every day or so or so might be nice as this puts an analysis limit in play to avoid extended delays.Alternatively, at startup you can do
0x10002but set an explicit largeranalysis_limitto allow for more aggressive but still limited cleanup of larger DBs without potentially hanging vrcx for an extended period. Though given the kind of write workload of sqlite. While the bit at0x00010does set an analysis limit automtically, I'd imagine you'd want to allow for a higher limit than it would normally pick, as the limit automatically picked is targeted to minimize disruption - less of an issue at startup.This is not the same as VACUUM - vaccum does not actually perform performance-related optimizations to the database, it just frees up disk space by compacting tombstoned data. It will naturally improve performance a little, but optimize does far more work in actually tuning the DB.
SQLITE already
Information on the pragma can be seen at https://www.sqlite.org/pragma.html#pragma_optimize
Describe how it would look if it requires a UI.
Under advanced options, an aggressive "Optimize VRCX Database" button with a popup warning "This may take a while" that runs
PRAGMA optimize=0x10002;which runs optimize on all tables and without an analysis limit.It might also be useful to run the
PRAGMA optimize(-1);op at startup, and if this shows anything significant, you show a popup (similar to how the update dialog shows) asking about optimizing the database one-time - if not, you just stick with the default gradual/limited optimize with a limit (bitmask0x00012or0x10012) - however this may well be overkill.Explain why people would want to use it.
Speeds up startup times and general performance for VRCX when the sheer amount of data stored is causing performance problems.