public void Populate(ListView view) { view.Items.Clear(); foreach (string table in _tables) { ITable tbl = _database.GetTable(table); ListViewItem item = view.Items.Add(table); item.Tag = tbl; RecordsCounts counts = tbl.ComputeWastedSpace(); int normalRecords = counts.NormalRecordCount; item.SubItems.Add((normalRecords == 0) ? "Empty" : normalRecords.ToString()); int totalRecords = counts.TotalRecordCount; item.SubItems.Add( (totalRecords == 0) ? "0%" : ((totalRecords - normalRecords) * 100 / totalRecords).ToString() + "%"); } }
private void CalcSpace(IDatabase db, string tableName) { ITable tbl = db.GetTable(tableName); RecordsCounts counts = tbl.ComputeWastedSpace(); if (counts.NormalRecordCount == 0 && counts.TotalRecordCount == 0) { Console.WriteLine("{0}: empty", tableName); } else { long deletedRecordsCount = counts.TotalRecordCount - counts.NormalRecordCount; Console.WriteLine("{0}: total {1} records , wasted {2} records, percentage {3}%", tableName, counts.TotalRecordCount, deletedRecordsCount, (deletedRecordsCount * 100) / counts.TotalRecordCount); } }
public void ComputeWastedSpace( ) { ITable testTable = m_database.GetTable("People"); for (int i = 0; i < 1000; i++) { IRecord record = testTable.NewRecord(); record.SetValue(1, i.ToString()); record.Commit(); } RecordsCounts recCounts = testTable.ComputeWastedSpace(); Assert.AreEqual(1000, recCounts.NormalRecordCount); Assert.AreEqual(1000, recCounts.TotalRecordCount); ICountedResultSet resultSet = testTable.CreateModifiableResultSet(1, "5"); foreach (IRecord record in resultSet) { record.Delete(); } resultSet.Dispose(); recCounts = testTable.ComputeWastedSpace(); Assert.AreEqual(999, recCounts.NormalRecordCount); Assert.AreEqual(1000, recCounts.TotalRecordCount); m_database.Shutdown(); DBStructure database = new DBStructure("", "MyPal"); database.LoadStructure(); m_database = database.OpenDatabase( ); testTable = m_database.GetTable("People"); for (int i = 1000; i < 2000; i++) { IRecord record = testTable.NewRecord(); record.SetValue(1, i.ToString()); record.Commit(); } recCounts = testTable.ComputeWastedSpace(); Assert.AreEqual(1999, recCounts.NormalRecordCount); Assert.AreEqual(2000, recCounts.TotalRecordCount); for (int i = 500; i < 1500; i++) { ICountedResultSet resultSet1 = testTable.CreateModifiableResultSet(1, i.ToString()); foreach (IRecord record in resultSet1) { record.Delete(); } resultSet1.Dispose(); } recCounts = testTable.ComputeWastedSpace(); Assert.AreEqual(999, recCounts.NormalRecordCount); Assert.AreEqual(1001, recCounts.TotalRecordCount - recCounts.NormalRecordCount); testTable.SortedColumn = -1; testTable.Defragment(); testTable.SortedColumn = 1; testTable.Defragment(); testTable.SortedColumn = 0; testTable.Defragment(); recCounts = testTable.ComputeWastedSpace(); Assert.AreEqual(999, recCounts.NormalRecordCount); Assert.AreEqual(999, recCounts.TotalRecordCount); Assert.AreEqual(0, recCounts.TotalRecordCount - recCounts.NormalRecordCount); }