این اسکریپت پایگاه دادهی x-ui
را بهینهسازی میکند، قفلها را حذف کرده و عملکرد را بهبود میبخشد. پس از اجرا، فایلهای اضافی در مسیر /etc/x-ui/
ایجاد میشوند که این رفتاری طبیعی است.
- اسکریپت را ذخیره کنید در یک فایل، مثلاً
x-ui_optimize_db.py
. - با دسترسی
root
اجرا کنید:
git clone https://github.com/dev-ir/x-ui-db.git
sudo python3 x_ui_optimize_db.py
systemctl stop x-ui
این کار برای جلوگیری از قفل شدن پایگاه داده در حین بهینهسازی ضروری است.
cp /etc/x-ui/x-ui.db /tmp/x-ui-<timestamp>.db
فایل پشتیبان شامل یک برچسب زمانی خواهد بود، مانند:
/tmp/x-ui-1711045600.db
در صورت بروز مشکل، این نسخهی پشتیبان امکان بازگردانی را فراهم میکند.
دستور SQL | توضیح |
---|---|
PRAGMA journal_mode=WAL; |
حالت WAL (Write-Ahead Logging) را فعال میکند که اجازهی خواندن و نوشتن همزمان را میدهد. این کار خطای database locked را کاهش میدهد. |
PRAGMA wal_checkpoint(TRUNCATE); |
فایلهای WAL قدیمی را پاک کرده و فشار روی دیسک را کاهش میدهد. |
PRAGMA optimize; |
شاخصها و کش پایگاه داده را بهینهسازی کرده و سرعت اجرای درخواستها را افزایش میدهد. |
PRAGMA busy_timeout = 5000; |
مدت زمان انتظار قبل از نمایش خطای database locked را به ۵۰۰۰ میلیثانیه (۵ ثانیه) افزایش میدهد. |
PRAGMA read_uncommitted = 1; |
امکان خواندن دادهها را بدون انتظار برای پایان تراکنشهای دیگر فراهم میکند (اما ممکن است دادههای تأیید نشده نمایش داده شوند). |
systemctl restart x-ui
پس از این عملیات، پایگاه داده سریعتر و پایدارتر خواهد شد.
پس از فعالسازی WAL، فایلهای اضافی در مسیر /etc/x-ui/
ظاهر میشوند:
فایل | توضیح |
---|---|
x-ui.db |
فایل اصلی پایگاه داده SQLite. |
x-ui.db-wal |
فایل WAL (Write-Ahead Logging) که ابتدا تغییرات در آن ثبت میشوند قبل از نوشتن در فایل اصلی. |
x-ui.db-shm |
فایلی برای مدیریت دسترسی همزمان به دادهها (Shared Memory). |
ایجاد این فایلها کاملاً طبیعی است و نشانهی خطا نیست.
📌 نکته: اگر x-ui.db-wal
بیش از حد بزرگ شد، میتوانید با اجرای دستور زیر آن را پاک کنید:
PRAGMA wal_checkpoint(TRUNCATE);
- سرویس را متوقف کنید:
systemctl stop x-ui
- پایگاه داده را از نسخهی پشتیبان بازگردانی کنید:
cp /tmp/x-ui-<timestamp>.db /etc/x-ui/x-ui.db
- سرویس را مجدداً اجرا کنید:
systemctl start x-ui
تلگرام: @DSRClient