1/*- 2 * See the file LICENSE for redistribution information. 3 * 4 * Copyright (c) 2009 Oracle. All rights reserved. 5 * 6 */ 7using System; 8using System.Collections.Generic; 9using System.Text; 10 11namespace BerkeleyDB { 12 /// <summary> 13 /// Statistical information about the locking subsystem 14 /// </summary> 15 public class LockStats { 16 private Internal.LockStatStruct st; 17 internal LockStats(Internal.LockStatStruct stats) { 18 st = stats; 19 } 20 21 /// <summary> 22 /// Last allocated locker ID. 23 /// </summary> 24 public uint LastAllocatedLockerID { get { return st.st_id; } } 25 /// <summary> 26 /// Lock conflicts w/ subsequent wait 27 /// </summary> 28 public ulong LockConflictsWait { get { return st.st_lock_wait; } } 29 /// <summary> 30 /// Lock conflicts w/o subsequent wait 31 /// </summary> 32 public ulong LockConflictsNoWait { get { return st.st_lock_nowait; } } 33 /// <summary> 34 /// Number of lock deadlocks. 35 /// </summary> 36 public ulong LockDeadlocks { get { return st.st_ndeadlocks; } } 37 /// <summary> 38 /// Number of lock downgrades. 39 /// </summary> 40 public ulong LockDowngrades { get { return st.st_ndowngrade; } } 41 /// <summary> 42 /// Number of lock modes. 43 /// </summary> 44 public int LockModes { get { return st.st_nmodes; } } 45 /// <summary> 46 /// Number of lock puts. 47 /// </summary> 48 public ulong LockPuts { get { return st.st_nreleases; } } 49 /// <summary> 50 /// Number of lock gets. 51 /// </summary> 52 public ulong LockRequests { get { return st.st_nrequests; } } 53 /// <summary> 54 /// Number of lock steals so far. 55 /// </summary> 56 public ulong LockSteals { get { return st.st_locksteals; } } 57 /// <summary> 58 /// Lock timeout. 59 /// </summary> 60 public uint LockTimeoutLength { get { return st.st_locktimeout; } } 61 /// <summary> 62 /// Number of lock timeouts. 63 /// </summary> 64 public ulong LockTimeouts { get { return st.st_nlocktimeouts; } } 65 /// <summary> 66 /// Number of lock upgrades. 67 /// </summary> 68 public ulong LockUpgrades { get { return st.st_nupgrade; } } 69 /// <summary> 70 /// Locker lock granted without wait. 71 /// </summary> 72 public ulong LockerNoWait { get { return st.st_lockers_nowait; } } 73 /// <summary> 74 /// Locker lock granted after wait. 75 /// </summary> 76 public ulong LockerWait { get { return st.st_lockers_wait; } } 77 /// <summary> 78 /// Current number of lockers. 79 /// </summary> 80 public uint Lockers { get { return st.st_nlockers; } } 81 /// <summary> 82 /// Current number of locks. 83 /// </summary> 84 public uint Locks { get { return st.st_nlocks; } } 85 /// <summary> 86 /// Max length of bucket. 87 /// </summary> 88 public uint MaxBucketLength { get { return st.st_hash_len; } } 89 /// <summary> 90 /// Maximum number steals in any partition. 91 /// </summary> 92 public ulong MaxLockSteals { get { return st.st_maxlsteals; } } 93 /// <summary> 94 /// Maximum number of lockers so far. 95 /// </summary> 96 public uint MaxLockers { get { return st.st_maxnlockers; } } 97 /// <summary> 98 /// Maximum num of lockers in table. 99 /// </summary> 100 public uint MaxLockersInTable { get { return st.st_maxlockers; } } 101 /// <summary> 102 /// Maximum number of locks so far. 103 /// </summary> 104 public uint MaxLocks { get { return st.st_maxnlocks; } } 105 /// <summary> 106 /// Maximum number of locks in any bucket. 107 /// </summary> 108 public uint MaxLocksInBucket { get { return st.st_maxhlocks; } } 109 /// <summary> 110 /// Maximum number of locks in table. 111 /// </summary> 112 public uint MaxLocksInTable { get { return st.st_maxlocks; } } 113 /// <summary> 114 /// Maximum number of steals in any partition. 115 /// </summary> 116 public ulong MaxObjectSteals { get { return st.st_maxosteals; } } 117 /// <summary> 118 /// Maximum number of objects so far. 119 /// </summary> 120 public uint MaxObjects { get { return st.st_maxnobjects; } } 121 /// <summary> 122 /// Maximum number of objectsin any bucket. 123 /// </summary> 124 public uint MaxObjectsInBucket { get { return st.st_maxhobjects; } } 125 /// <summary> 126 /// Max partition lock granted without wait. 127 /// </summary> 128 public ulong MaxPartitionLockNoWait { get { return st.st_part_max_nowait; } } 129 /// <summary> 130 /// Max partition lock granted after wait. 131 /// </summary> 132 public ulong MaxPartitionLockWait { get { return st.st_part_max_wait; } } 133 /// <summary> 134 /// Current maximum unused ID. 135 /// </summary> 136 public uint MaxUnusedID { get { return st.st_cur_maxid; } } 137 /// <summary> 138 /// Maximum num of objects in table. 139 /// </summary> 140 public uint MaxObjectsInTable { get { return st.st_maxobjects; } } 141 /// <summary> 142 /// number of partitions. 143 /// </summary> 144 public uint nPartitions { get { return st.st_partitions; } } 145 /// <summary> 146 /// Object lock granted without wait. 147 /// </summary> 148 public ulong ObjectNoWait { get { return st.st_objs_nowait; } } 149 /// <summary> 150 /// Number of objects steals so far. 151 /// </summary> 152 public ulong ObjectSteals { get { return st.st_objectsteals; } } 153 /// <summary> 154 /// Object lock granted after wait. 155 /// </summary> 156 public ulong ObjectWait { get { return st.st_objs_wait; } } 157 /// <summary> 158 /// Current number of objects. 159 /// </summary> 160 public uint Objects { get { return st.st_nobjects; } } 161 /// <summary> 162 /// Partition lock granted without wait. 163 /// </summary> 164 public ulong PartitionLockNoWait { get { return st.st_part_nowait; } } 165 /// <summary> 166 /// Partition lock granted after wait. 167 /// </summary> 168 public ulong PartitionLockWait { get { return st.st_part_wait; } } 169 /// <summary> 170 /// Region lock granted without wait. 171 /// </summary> 172 public ulong RegionNoWait { get { return st.st_region_nowait; } } 173 /// <summary> 174 /// Region size. 175 /// </summary> 176 public ulong RegionSize { get { return (ulong)st.st_regsize.ToInt64(); } } 177 /// <summary> 178 /// Region lock granted after wait. 179 /// </summary> 180 public ulong RegionWait { get { return st.st_region_wait; } } 181 /// <summary> 182 /// Transaction timeout. 183 /// </summary> 184 public uint TxnTimeoutLength { get { return st.st_txntimeout; } } 185 /// <summary> 186 /// Number of transaction timeouts. 187 /// </summary> 188 public ulong TxnTimeouts { get { return st.st_ntxntimeouts; } } 189 190 } 191}