存储监控
C# 应用程序可以直接从 Connection 类的属性 FreePages、TotalPages 和 DbPageSize 中获取数据库页面统计信息。此外,Connection 类的方法 GetClassStats() 和 GetIndexStat() 分别返回类和索引的统计信息,而属性 IndexStatCount 则给出数据库中索引的数量。
以下代码片段来自示例“samples/csharp/Statistics”,展示了如何获取这些统计信息:
Console.WriteLine("Total pages: {0}", con.TotalPages);
Console.WriteLine("Free pages: {0}", con.FreePages);
Console.WriteLine("Page size: {0}", con.DbPageSize);
con.StartTransaction(Database.TransactionType.ReadOnly);
for (int cls = 1; cls <= parameters.Classes.Length; cls++)
{
ClassStat stat = con.GetClassStat(cls);
Console.WriteLine("Class {0}: {1} objects, {2} pages, {3} blob pages",
cls, stat.ObjectsCount, stat.CorePageCount, stat.BlobPages);
}
con.RollbackTransaction();
Console.WriteLine();
con.StartTransaction(Database.TransactionType.ReadOnly);
short ind_num = con.IndexStatCount;
for (short idx = 0; idx < ind_num; idx++)
{
IndexStat stat = con.GetIndexStat(idx);
Console.WriteLine("{0}: {1} key(s) {2} page(s) ", stat.Label, stat.KeysCount, stat.PagesCount);
}
con.RollbackTransaction();
持久数据库
C# 应用程序可以直接从 Connection 类的 GetDiskInfo() 方法获取有关持久介质上数据库存储的信息,该方法返回 DataFileSize(数据文件大小)、UsedDatabaseSize(已用数据库大小)和 LogFileSize(日志文件大小)等属性。
DiskInfo di = con.GetDiskInfo();
Console.WriteLine("Disk file size: {0}, Used: {1}, Transaction log file size: {2}",
di.DataFileSize, di.UsedDatabaseSize, di.LogFileSize);