Copyright
©
vietjack.com
VACUUM trong SQLite
Lệnh VACUUM trong SQLite xóa cơ sở dữ liệu chính (Main Database) bằng việc sao chép
nội dung của nó sang một Database File tạm thời và nạp lại Database File ban đầu từ bản
sao. Việc này loại bỏ các Free Page và căn chỉnh lại dữ liệu bảng để chúng là liền kề nhau,
và xóa cấu trúc của Database File.
Lệnh VACUUM có thể thay đổi ROWID của các entry trong các bảng mà không có một
INTERGER PRIMARY KEY tường minh. Lệnh VACUUM chỉ làm việc trên Main Database.
Bạn không thể thực hiện lệnh VACUUM trên một Attach Database.
Lệnh VACUUM trong SQLite sẽ thất bại nếu có một Active Transaction. Lệnh này cũng có
thể được sử dụng để sửa đổi nhiều tham số cấu hình Database cụ thể.
Manual VACUUM trong SQLite
Sau đây là cú pháp đơn giản để thông báo một lệnh VACUUM cho toàn bộ cơ sở dữ liệu từ
dòng nhắc lệnh:
$sqlite3 database_name "VACUUM;"
Bạn cũng có thể chạy VACUUM từ dòng nhắc sqlite như sau:
sqlite> VACUUM;
Bạn cũng có thể chạy VACUUM trên một bảng cụ thể như sau:
sqlite> VACUUM table_name;
Auto-VACCUM trong SQLite
Auto-VACUUM trong SQLite không thực hiện giống như VACUUM, thay vào đó nó chỉ di
chuyển các Free Page tới phần cuối của cơ sở dữ liệu, do đó giảm kích cỡ của cơ sở dữ
liệu. Bằng việc thực hiện như thế, nó có thể phân mảnh cơ sở dữ liệu trong khi VACUUm
đảm bảo cơ sở dữ liệu là liên tục. Vì thế, Auto-VACUUM chỉ giữ cho cơ sở dữ liệu nhỏ
hơn.
Bạn có thể kích hoạt/vô hiệu hóa auto-vacuum trong SQLite bằng các Pragma sau dòng
nhắc sqlite:
Trang
chia
sẻ
các
bài
học
online
miễn
phí
Copyright
©
vietjack.com
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum sqlite>
PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuum sqlite>
PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum
Bạn có thể chạy lệnh sau từ dòng nhắc lệnh để kiểm tra thiết lập auto-vacuum.
$sqlite3 database_name "PRAGMA auto_vacuum;"
Trang
chia
sẻ
các
bài
học
online
miễn
phí