標籤:
當從SQLite資料庫中刪除了大量資料,如果探索資料庫檔案並未變小,可以執行 VACUUM 命令,該命令將重新組織資料庫,釋放多餘空間。
測試插入資料
try { SQLiteConnection cnn = new SQLiteConnection(@"Data Source=G:\App_Data\Data.sqlite;"); cnn.Open(); using (SQLiteTransaction dbTrans = cnn.BeginTransaction()) { using (SQLiteCommand cmd = cnn.CreateCommand()) { try { cmd.CommandText = @"INSERT INTO Students (Name, Description) VALUES (‘1‘, ‘2‘)"; for (int n = 0; n < 100000; n++) { cmd.ExecuteNonQuery(); } dbTrans.Commit(); } catch { dbTrans.Rollback(); } } } } catch (Exception ex) { Clipboard.SetText(ex.Message + "\r\n\r\n" + ex.StackTrace); }
刪除表中的資料後,探索資料庫檔案並未變小。
執行以下操作:
using (SQLiteConnection connection = new SQLiteConnection(connectionString)) { using (SQLiteCommand cmd = new SQLiteCommand("VACUUM", connection)) { try { connection.Open(); cmd.ExecuteNonQuery(); } catch (System.Data.SQLite.SQLiteException E) { connection.Close(); } } }
探索資料庫檔案變為2kb。
注意壓縮資料庫執行操作中,不要使用Transaction事務,否則會失敗。
使用C# 壓縮 SQLite 資料庫注意事項