mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-23 04:43:03 +01:00
Added MON$IO_STATS and MON$RECORD_STATS.
This commit is contained in:
parent
b55b56ad7d
commit
a13f1e0ff4
@ -364,6 +364,7 @@
|
||||
const USHORT f_mon_db_res_space = 14;
|
||||
const USHORT f_mon_db_created = 15;
|
||||
const USHORT f_mon_db_pages = 16;
|
||||
const USHORT f_mon_db_stat_id = 17;
|
||||
|
||||
|
||||
const USHORT f_mon_att_id = 0;
|
||||
@ -379,6 +380,7 @@
|
||||
const USHORT f_mon_att_timestamp = 10;
|
||||
const USHORT f_mon_att_gc = 11;
|
||||
const USHORT f_mon_att_remote_process = 12;
|
||||
const USHORT f_mon_att_stat_id = 13;
|
||||
|
||||
|
||||
const USHORT f_mon_tra_id = 0;
|
||||
@ -393,6 +395,7 @@
|
||||
const USHORT f_mon_tra_read_only = 9;
|
||||
const USHORT f_mon_tra_auto_commit = 10;
|
||||
const USHORT f_mon_tra_auto_undo = 11;
|
||||
const USHORT f_mon_tra_stat_id = 12;
|
||||
|
||||
|
||||
const USHORT f_mon_stmt_id = 0;
|
||||
@ -401,6 +404,7 @@
|
||||
const USHORT f_mon_stmt_state = 3;
|
||||
const USHORT f_mon_stmt_timestamp = 4;
|
||||
const USHORT f_mon_stmt_sql_text = 5;
|
||||
const USHORT f_mon_stmt_stat_id = 6;
|
||||
|
||||
|
||||
const USHORT f_mon_call_id = 0;
|
||||
@ -411,5 +415,22 @@
|
||||
const USHORT f_mon_call_timestamp = 5;
|
||||
const USHORT f_mon_call_src_line = 6;
|
||||
const USHORT f_mon_call_src_column = 7;
|
||||
const USHORT f_mon_call_stat_id = 8;
|
||||
|
||||
|
||||
const USHORT f_mon_io_stat_id = 0;
|
||||
const USHORT f_mon_io_page_reads = 1;
|
||||
const USHORT f_mon_io_page_writes = 2;
|
||||
const USHORT f_mon_io_page_fetches = 3;
|
||||
const USHORT f_mon_io_page_marks = 4;
|
||||
|
||||
|
||||
const USHORT f_mon_rec_stat_id = 0;
|
||||
const USHORT f_mon_rec_seq_reads = 1;
|
||||
const USHORT f_mon_rec_idx_reads = 2;
|
||||
const USHORT f_mon_rec_inserts = 3;
|
||||
const USHORT f_mon_rec_updates = 4;
|
||||
const USHORT f_mon_rec_deletes = 5;
|
||||
const USHORT f_mon_rec_backouts = 6;
|
||||
const USHORT f_mon_rec_purges = 7;
|
||||
const USHORT f_mon_rec_expunges = 8;
|
||||
|
@ -316,6 +316,7 @@ void DatabaseSnapshot::SharedMemory::init(void* arg, SH_MEM_T* shmemData, bool i
|
||||
|
||||
Mutex DatabaseSnapshot::initMutex;
|
||||
DatabaseSnapshot::SharedMemory* DatabaseSnapshot::dump = NULL;
|
||||
int DatabaseSnapshot::pid = getpid();
|
||||
|
||||
|
||||
DatabaseSnapshot* DatabaseSnapshot::create(thread_db* tdbb)
|
||||
@ -375,7 +376,7 @@ int DatabaseSnapshot::blockingAst(void* ast_object)
|
||||
|
||||
|
||||
DatabaseSnapshot::DatabaseSnapshot(thread_db* tdbb, MemoryPool& pool)
|
||||
: snapshot(pool)
|
||||
: snapshot(pool), idMap(pool), idCounter(0)
|
||||
{
|
||||
// Initialize record buffers
|
||||
RecordBuffer* dbb_buffer =
|
||||
@ -388,6 +389,10 @@ DatabaseSnapshot::DatabaseSnapshot(thread_db* tdbb, MemoryPool& pool)
|
||||
allocBuffer(tdbb, pool, rel_mon_statements);
|
||||
RecordBuffer* call_buffer =
|
||||
allocBuffer(tdbb, pool, rel_mon_calls);
|
||||
RecordBuffer* io_stat_buffer =
|
||||
allocBuffer(tdbb, pool, rel_mon_io_stats);
|
||||
RecordBuffer* rec_stat_buffer =
|
||||
allocBuffer(tdbb, pool, rel_mon_rec_stats);
|
||||
|
||||
Database* dbb = tdbb->tdbb_database;
|
||||
fb_assert(dbb);
|
||||
@ -474,6 +479,12 @@ DatabaseSnapshot::DatabaseSnapshot(thread_db* tdbb, MemoryPool& pool)
|
||||
case rel_mon_calls:
|
||||
buffer = call_buffer;
|
||||
break;
|
||||
case rel_mon_io_stats:
|
||||
buffer = io_stat_buffer;
|
||||
break;
|
||||
case rel_mon_rec_stats:
|
||||
buffer = rec_stat_buffer;
|
||||
break;
|
||||
default:
|
||||
fb_assert(false);
|
||||
}
|
||||
@ -614,6 +625,21 @@ void DatabaseSnapshot::putField(Record* record, int id, const void* source, size
|
||||
return;
|
||||
}
|
||||
|
||||
if (length == sizeof(SINT64) && desc.dsc_dtype == dtype_long)
|
||||
{
|
||||
// special case: translate 64-bit global ID into 32-bit local ID
|
||||
const SINT64 global_id = *(SINT64*) source;
|
||||
SLONG local_id = 0;
|
||||
if (!idMap.get(global_id, local_id))
|
||||
{
|
||||
local_id = ++idCounter;
|
||||
idMap.put(global_id, local_id);
|
||||
}
|
||||
*(SLONG*) address = local_id;
|
||||
CLEAR_NULL(record, id);
|
||||
return;
|
||||
}
|
||||
|
||||
switch (desc.dsc_dtype) {
|
||||
case dtype_text:
|
||||
{
|
||||
@ -785,18 +811,18 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
|
||||
// Database information
|
||||
|
||||
putDatabase(dbb, *writer);
|
||||
putDatabase(dbb, *writer, dbb->generateId());
|
||||
|
||||
// Self attachment information
|
||||
|
||||
putAttachment(self_attachment, *writer);
|
||||
putAttachment(self_attachment, *writer, dbb->generateId());
|
||||
|
||||
// Self transactions information
|
||||
|
||||
for (transaction = self_attachment->att_transactions;
|
||||
transaction; transaction = transaction->tra_next)
|
||||
{
|
||||
putTransaction(transaction, *writer);
|
||||
putTransaction(transaction, *writer, dbb->generateId());
|
||||
}
|
||||
|
||||
// Self requests information
|
||||
@ -806,7 +832,7 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
{
|
||||
if (!(request->req_flags & (req_internal | req_sys_trigger)))
|
||||
{
|
||||
putRequest(request, *writer);
|
||||
putRequest(request, *writer, dbb->generateId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -821,7 +847,7 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
if (!(request->req_flags & (req_internal | req_sys_trigger)) &&
|
||||
request->req_caller)
|
||||
{
|
||||
putCall(request, *writer);
|
||||
putCall(request, *writer, dbb->generateId());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -834,14 +860,14 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
if (attachment == self_attachment)
|
||||
continue;
|
||||
|
||||
putAttachment(attachment, *writer);
|
||||
putAttachment(attachment, *writer, dbb->generateId());
|
||||
|
||||
// Transaction information
|
||||
|
||||
for (transaction = attachment->att_transactions;
|
||||
transaction; transaction = transaction->tra_next)
|
||||
{
|
||||
putTransaction(transaction, *writer);
|
||||
putTransaction(transaction, *writer, dbb->generateId());
|
||||
}
|
||||
|
||||
// Request information
|
||||
@ -851,7 +877,7 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
{
|
||||
if (!(request->req_flags & (req_internal | req_sys_trigger)))
|
||||
{
|
||||
putRequest(request, *writer);
|
||||
putRequest(request, *writer, dbb->generateId());
|
||||
}
|
||||
}
|
||||
|
||||
@ -866,7 +892,7 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
if (!(request->req_flags & (req_internal | req_sys_trigger)) &&
|
||||
request->req_caller)
|
||||
{
|
||||
putCall(request, *writer);
|
||||
putCall(request, *writer, dbb->generateId());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -888,7 +914,8 @@ void DatabaseSnapshot::dumpData(thread_db* tdbb)
|
||||
|
||||
|
||||
void DatabaseSnapshot::putDatabase(const Database* database,
|
||||
ClumpletWriter& writer)
|
||||
ClumpletWriter& writer,
|
||||
int stat_id)
|
||||
{
|
||||
fb_assert(database);
|
||||
|
||||
@ -950,11 +977,15 @@ void DatabaseSnapshot::putDatabase(const Database* database,
|
||||
sizeof(ISC_TIMESTAMP));
|
||||
// database size
|
||||
writer.insertBigInt(f_mon_db_pages, PageSpace::actAlloc(database));
|
||||
// statistics
|
||||
writer.insertBigInt(f_mon_db_stat_id, getGlobalId(stat_id));
|
||||
putStatistics(&database->dbb_stats, writer, stat_id);
|
||||
}
|
||||
|
||||
|
||||
void DatabaseSnapshot::putAttachment(const Attachment* attachment,
|
||||
ClumpletWriter& writer)
|
||||
ClumpletWriter& writer,
|
||||
int stat_id)
|
||||
{
|
||||
fb_assert(attachment);
|
||||
|
||||
@ -1005,69 +1036,77 @@ void DatabaseSnapshot::putAttachment(const Attachment* attachment,
|
||||
// garbage collection flag
|
||||
temp = (attachment->att_flags & ATT_no_cleanup) ? 0 : 1;
|
||||
writer.insertInt(f_mon_att_gc, temp);
|
||||
// statistics
|
||||
writer.insertBigInt(f_mon_att_stat_id, getGlobalId(stat_id));
|
||||
putStatistics(&attachment->att_stats, writer, stat_id);
|
||||
}
|
||||
|
||||
|
||||
void DatabaseSnapshot::putTransaction(const jrd_tra* new_transaction,
|
||||
ClumpletWriter& writer)
|
||||
void DatabaseSnapshot::putTransaction(const jrd_tra* transaction,
|
||||
ClumpletWriter& writer,
|
||||
int stat_id)
|
||||
{
|
||||
fb_assert(new_transaction);
|
||||
fb_assert(transaction);
|
||||
|
||||
writer.insertByte(TAG_RECORD, rel_mon_transactions);
|
||||
|
||||
int temp;
|
||||
|
||||
// transaction id
|
||||
writer.insertInt(f_mon_tra_id, new_transaction->tra_number);
|
||||
writer.insertInt(f_mon_tra_id, transaction->tra_number);
|
||||
// attachment id
|
||||
writer.insertInt(f_mon_tra_att_id,
|
||||
new_transaction->tra_attachment->att_attachment_id);
|
||||
transaction->tra_attachment->att_attachment_id);
|
||||
// state
|
||||
temp = new_transaction->tra_requests ? mon_state_active : mon_state_idle;
|
||||
temp = transaction->tra_requests ? mon_state_active : mon_state_idle;
|
||||
writer.insertInt(f_mon_tra_state, temp);
|
||||
// timestamp
|
||||
writer.insertBytes(f_mon_tra_timestamp,
|
||||
(UCHAR*) &new_transaction->tra_timestamp.value(),
|
||||
(UCHAR*) &transaction->tra_timestamp.value(),
|
||||
sizeof(ISC_TIMESTAMP));
|
||||
// top transaction
|
||||
writer.insertInt(f_mon_tra_top, new_transaction->tra_top);
|
||||
writer.insertInt(f_mon_tra_top, transaction->tra_top);
|
||||
// oldest transaction
|
||||
writer.insertInt(f_mon_tra_oit, new_transaction->tra_oldest);
|
||||
writer.insertInt(f_mon_tra_oit, transaction->tra_oldest);
|
||||
// oldest active transaction
|
||||
writer.insertInt(f_mon_tra_oat, new_transaction->tra_oldest_active);
|
||||
writer.insertInt(f_mon_tra_oat, transaction->tra_oldest_active);
|
||||
// isolation mode
|
||||
if (new_transaction->tra_flags & TRA_degree3)
|
||||
if (transaction->tra_flags & TRA_degree3)
|
||||
temp = iso_mode_consistency;
|
||||
else if (new_transaction->tra_flags & TRA_read_committed)
|
||||
temp = (new_transaction->tra_flags & TRA_rec_version) ?
|
||||
else if (transaction->tra_flags & TRA_read_committed)
|
||||
temp = (transaction->tra_flags & TRA_rec_version) ?
|
||||
iso_mode_rc_version : iso_mode_rc_no_version;
|
||||
else
|
||||
temp = iso_mode_concurrency;
|
||||
writer.insertInt(f_mon_tra_iso_mode, temp);
|
||||
// lock timeout
|
||||
writer.insertInt(f_mon_tra_lock_timeout,
|
||||
new_transaction->tra_lock_timeout);
|
||||
transaction->tra_lock_timeout);
|
||||
// read only flag
|
||||
temp = (new_transaction->tra_flags & TRA_readonly) ? 1 : 0;
|
||||
temp = (transaction->tra_flags & TRA_readonly) ? 1 : 0;
|
||||
writer.insertInt(f_mon_tra_read_only, temp);
|
||||
// autocommit flag
|
||||
temp = (new_transaction->tra_flags & TRA_autocommit) ? 1 : 0;
|
||||
temp = (transaction->tra_flags & TRA_autocommit) ? 1 : 0;
|
||||
writer.insertInt(f_mon_tra_auto_commit, temp);
|
||||
// auto undo flag
|
||||
temp = (new_transaction->tra_flags & TRA_no_auto_undo) ? 0 : 1;
|
||||
temp = (transaction->tra_flags & TRA_no_auto_undo) ? 0 : 1;
|
||||
writer.insertInt(f_mon_tra_auto_undo, temp);
|
||||
// statistics
|
||||
writer.insertBigInt(f_mon_tra_stat_id, getGlobalId(stat_id));
|
||||
putStatistics(&transaction->tra_stats, writer, stat_id);
|
||||
}
|
||||
|
||||
|
||||
void DatabaseSnapshot::putRequest(const jrd_req* request,
|
||||
ClumpletWriter& writer)
|
||||
ClumpletWriter& writer,
|
||||
int stat_id)
|
||||
{
|
||||
fb_assert(request);
|
||||
|
||||
writer.insertByte(TAG_RECORD, rel_mon_statements);
|
||||
|
||||
// request id
|
||||
writer.insertInt(f_mon_stmt_id, request->req_id);
|
||||
writer.insertBigInt(f_mon_stmt_id, getGlobalId(request->req_id));
|
||||
// attachment id
|
||||
if (request->req_attachment) {
|
||||
writer.insertInt(f_mon_stmt_att_id,
|
||||
@ -1096,11 +1135,15 @@ void DatabaseSnapshot::putRequest(const jrd_req* request,
|
||||
}
|
||||
// sql text
|
||||
writer.insertString(f_mon_stmt_sql_text, request->req_sql_text);
|
||||
// statistics
|
||||
writer.insertBigInt(f_mon_stmt_stat_id, getGlobalId(stat_id));
|
||||
putStatistics(&request->req_stats, writer, stat_id);
|
||||
}
|
||||
|
||||
|
||||
void DatabaseSnapshot::putCall(const jrd_req* request,
|
||||
ClumpletWriter& writer)
|
||||
ClumpletWriter& writer,
|
||||
int stat_id)
|
||||
{
|
||||
fb_assert(request);
|
||||
|
||||
@ -1112,10 +1155,10 @@ void DatabaseSnapshot::putCall(const jrd_req* request,
|
||||
writer.insertByte(TAG_RECORD, rel_mon_calls);
|
||||
|
||||
// call id
|
||||
writer.insertInt(f_mon_call_id, request->req_id);
|
||||
writer.insertBigInt(f_mon_call_id, getGlobalId(request->req_id));
|
||||
// statement id
|
||||
writer.insertInt(f_mon_call_stmt_id,
|
||||
statement->req_id);
|
||||
const SINT64 stmt_id = ((SINT64)getpid() << BITS_PER_LONG) + statement->req_id;
|
||||
writer.insertBigInt(f_mon_call_stmt_id, stmt_id);
|
||||
// caller id
|
||||
if (statement == request->req_caller) {
|
||||
writer.insertInt(f_mon_call_caller_id, 0);
|
||||
@ -1149,4 +1192,49 @@ void DatabaseSnapshot::putCall(const jrd_req* request,
|
||||
// source line/column
|
||||
writer.insertInt(f_mon_call_src_line, request->req_src_line);
|
||||
writer.insertInt(f_mon_call_src_column, request->req_src_column);
|
||||
// statistics
|
||||
writer.insertBigInt(f_mon_call_stat_id, getGlobalId(stat_id));
|
||||
putStatistics(&request->req_stats, writer, stat_id);
|
||||
}
|
||||
|
||||
void DatabaseSnapshot::putStatistics(const RuntimeStatistics* statistics,
|
||||
Firebird::ClumpletWriter& writer,
|
||||
int stat_id)
|
||||
{
|
||||
fb_assert(statistics);
|
||||
|
||||
// statistics id
|
||||
const SINT64 id = getGlobalId(stat_id);
|
||||
|
||||
// physical I/O statistics
|
||||
writer.insertByte(TAG_RECORD, rel_mon_io_stats);
|
||||
writer.insertBigInt(f_mon_io_stat_id, id);
|
||||
writer.insertBigInt(f_mon_io_page_reads,
|
||||
statistics->getValue(RuntimeStatistics::PAGE_READS));
|
||||
writer.insertBigInt(f_mon_io_page_writes,
|
||||
statistics->getValue(RuntimeStatistics::PAGE_WRITES));
|
||||
writer.insertBigInt(f_mon_io_page_fetches,
|
||||
statistics->getValue(RuntimeStatistics::PAGE_FETCHES));
|
||||
writer.insertBigInt(f_mon_io_page_marks,
|
||||
statistics->getValue(RuntimeStatistics::PAGE_MARKS));
|
||||
|
||||
// logical I/O statistics
|
||||
writer.insertByte(TAG_RECORD, rel_mon_rec_stats);
|
||||
writer.insertBigInt(f_mon_rec_stat_id, id);
|
||||
writer.insertBigInt(f_mon_rec_seq_reads,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_SEQ_READS));
|
||||
writer.insertBigInt(f_mon_rec_idx_reads,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_IDX_READS));
|
||||
writer.insertBigInt(f_mon_rec_inserts,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_INSERTS));
|
||||
writer.insertBigInt(f_mon_rec_updates,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_UPDATES));
|
||||
writer.insertBigInt(f_mon_rec_deletes,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_DELETES));
|
||||
writer.insertBigInt(f_mon_rec_backouts,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_BACKOUTS));
|
||||
writer.insertBigInt(f_mon_rec_purges,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_PURGES));
|
||||
writer.insertBigInt(f_mon_rec_expunges,
|
||||
statistics->getValue(RuntimeStatistics::RECORD_EXPUNGES));
|
||||
}
|
||||
|
@ -115,16 +115,25 @@ private:
|
||||
static void dumpData(thread_db*);
|
||||
static const char* checkNull(int, int, const char*, size_t);
|
||||
|
||||
static void putDatabase(const Database*, Firebird::ClumpletWriter&);
|
||||
static void putAttachment(const Attachment*, Firebird::ClumpletWriter&);
|
||||
static void putTransaction(const jrd_tra*, Firebird::ClumpletWriter&);
|
||||
static void putRequest(const jrd_req*, Firebird::ClumpletWriter&);
|
||||
static void putCall(const jrd_req*, Firebird::ClumpletWriter&);
|
||||
static SINT64 getGlobalId(int value)
|
||||
{
|
||||
return ((SINT64)pid << BITS_PER_LONG) + value;
|
||||
}
|
||||
|
||||
static void putDatabase(const Database*, Firebird::ClumpletWriter&, int);
|
||||
static void putAttachment(const Attachment*, Firebird::ClumpletWriter&, int);
|
||||
static void putTransaction(const jrd_tra*, Firebird::ClumpletWriter&, int);
|
||||
static void putRequest(const jrd_req*, Firebird::ClumpletWriter&, int);
|
||||
static void putCall(const jrd_req*, Firebird::ClumpletWriter&, int);
|
||||
static void putStatistics(const RuntimeStatistics*, Firebird::ClumpletWriter&, int);
|
||||
|
||||
static Firebird::Mutex initMutex;
|
||||
static SharedMemory* dump;
|
||||
static int pid;
|
||||
|
||||
Firebird::Array<RelationData> snapshot;
|
||||
Firebird::GenericMap<Firebird::Pair<Firebird::NonPooled<SINT64, SLONG> > > idMap;
|
||||
int idCounter;
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
@ -126,6 +126,7 @@
|
||||
FIELD(fld_att_id , nam_att_id , dtype_long , sizeof(SLONG) , 0 , 0, NULL)
|
||||
FIELD(fld_stmt_id , nam_stmt_id , dtype_long , sizeof(SLONG) , 0 , 0, NULL)
|
||||
FIELD(fld_call_id , nam_call_id , dtype_long , sizeof(SLONG) , 0 , 0, NULL)
|
||||
FIELD(fld_stat_id , nam_stat_id , dtype_long , sizeof(SLONG) , 0 , 0, NULL)
|
||||
|
||||
FIELD(fld_pid , nam_pid , dtype_long , sizeof(SLONG) , 0 , 0, NULL)
|
||||
FIELD(fld_state , nam_state , dtype_short , sizeof(SSHORT), 0 , 0, NULL)
|
||||
|
@ -226,6 +226,7 @@ NAME("RDB$REMOTE_ADDRESS", nam_remote_addr)
|
||||
NAME("RDB$REMOTE_PROTOCOL", nam_remote_proto)
|
||||
NAME("RDB$SHUTDOWN_MODE", nam_shut_mode)
|
||||
NAME("RDB$SQL_DIALECT", nam_sql_dialect)
|
||||
NAME("RDB$STAT_ID", nam_stat_id)
|
||||
NAME("RDB$STATE", nam_state)
|
||||
NAME("RDB$STATEMENT_ID", nam_stmt_id)
|
||||
NAME("RDB$SWEEP_INTERVAL", nam_sweep_int)
|
||||
@ -248,6 +249,7 @@ NAME("MON$DATABASE", nam_mon_database)
|
||||
NAME("MON$DATABASE_NAME", nam_mon_db_name)
|
||||
NAME("MON$FORCED_WRITES", nam_mon_forced_writes)
|
||||
NAME("MON$GARBAGE_COLLECTION", nam_mon_gc)
|
||||
NAME("MON$IO_STATS", nam_mon_io_stats)
|
||||
NAME("MON$ISOLATION_MODE", nam_mon_iso_mode)
|
||||
NAME("MON$LOCK_TIMEOUT", nam_mon_lock_timeout)
|
||||
NAME("MON$NEXT_TRANSACTION", nam_mon_nt)
|
||||
@ -263,7 +265,20 @@ NAME("MON$OLDEST_SNAPSHOT", nam_mon_ost)
|
||||
NAME("MON$OLDEST_TRANSACTION", nam_mon_oit)
|
||||
NAME("MON$OWNER", nam_mon_owner)
|
||||
NAME("MON$PAGE_BUFFERS", nam_mon_page_bufs)
|
||||
NAME("MON$PAGE_FETCHES", nam_mon_page_fetches)
|
||||
NAME("MON$PAGE_MARKS", nam_mon_page_marks)
|
||||
NAME("MON$PAGE_READS", nam_mon_page_reads)
|
||||
NAME("MON$PAGE_WRITES", nam_mon_page_writes)
|
||||
NAME("MON$PAGES", nam_mon_pages)
|
||||
NAME("MON$RECORD_BACKOUTS", nam_mon_rec_backouts)
|
||||
NAME("MON$RECORD_DELETES", nam_mon_rec_deletes)
|
||||
NAME("MON$RECORD_EXPUNGES", nam_mon_rec_expunges)
|
||||
NAME("MON$RECORD_IDX_READS", nam_mon_rec_idx_reads)
|
||||
NAME("MON$RECORD_INSERTS", nam_mon_rec_inserts)
|
||||
NAME("MON$RECORD_PURGES", nam_mon_rec_purges)
|
||||
NAME("MON$RECORD_SEQ_READS", nam_mon_rec_seq_reads)
|
||||
NAME("MON$RECORD_STATS", nam_mon_rec_stats)
|
||||
NAME("MON$RECORD_UPDATES", nam_mon_rec_updates)
|
||||
NAME("MON$REMOTE_ADDRESS", nam_mon_remote_addr)
|
||||
NAME("MON$REMOTE_PID", nam_mon_remote_pid)
|
||||
NAME("MON$REMOTE_PROCESS", nam_mon_remote_process)
|
||||
@ -275,6 +290,7 @@ NAME("MON$SOURCE_LINE", nam_mon_src_line)
|
||||
NAME("MON$SOURCE_COLUMN", nam_mon_src_column)
|
||||
NAME("MON$SQL_TEXT", nam_mon_sql_text)
|
||||
NAME("MON$SQL_DIALECT", nam_mon_dialect)
|
||||
NAME("MON$STAT_ID", nam_mon_stat_id)
|
||||
NAME("MON$STATE", nam_mon_state)
|
||||
NAME("MON$STATEMENTS", nam_mon_statements)
|
||||
NAME("MON$STATEMENT_ID", nam_mon_stmt_id)
|
||||
|
@ -363,6 +363,7 @@ RELATION(nam_mon_database, rel_mon_database, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_db_res_space, nam_mon_res_space, fld_flag, 0, 0, 0, 0)
|
||||
FIELD(f_mon_db_created, nam_mon_created, fld_time, 0, 0, 0, 0)
|
||||
FIELD(f_mon_db_pages, nam_mon_pages, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_db_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
RELATION(nam_mon_attachments, rel_mon_attachments, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_att_id, nam_mon_att_id, fld_att_id, 0, 0, 0, 0)
|
||||
@ -378,6 +379,7 @@ RELATION(nam_mon_attachments, rel_mon_attachments, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_att_timestamp, nam_mon_timestamp, fld_time, 0, 0, 0, 0)
|
||||
FIELD(f_mon_att_gc, nam_mon_gc, fld_flag, 0, 0, 0, 0)
|
||||
FIELD(f_mon_att_remote_process, nam_mon_remote_process, fld_file_name, 0, 0, 0, 0)
|
||||
FIELD(f_mon_att_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
RELATION(nam_mon_transactions, rel_mon_transactions, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_tra_id, nam_mon_tra_id, fld_trans_id, 0, 0, 0, 0)
|
||||
@ -392,6 +394,7 @@ RELATION(nam_mon_transactions, rel_mon_transactions, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_tra_read_only, nam_mon_read_only, fld_flag, 0, 0, 0, 0)
|
||||
FIELD(f_mon_tra_auto_commit, nam_mon_auto_commit, fld_flag, 0, 0, 0, 0)
|
||||
FIELD(f_mon_tra_auto_undo, nam_mon_auto_undo, fld_flag, 0, 0, 0, 0)
|
||||
FIELD(f_mon_tra_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
RELATION(nam_mon_statements, rel_mon_statements, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_stmt_id, nam_mon_stmt_id, fld_stmt_id, 0, 0, 0, 0)
|
||||
@ -400,6 +403,7 @@ RELATION(nam_mon_statements, rel_mon_statements, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_stmt_state, nam_mon_state, fld_state, 0, 0, 0, 0)
|
||||
FIELD(f_mon_stmt_timestamp, nam_mon_timestamp, fld_time, 0, 0, 0, 0)
|
||||
FIELD(f_mon_stmt_sql_text, nam_mon_sql_text, fld_source, 0, 0, 0, 0)
|
||||
FIELD(f_mon_stmt_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
RELATION(nam_mon_calls, rel_mon_calls, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_call_id, nam_mon_call_id, fld_call_id, 0, 0, 0, 0)
|
||||
@ -410,4 +414,23 @@ RELATION(nam_mon_calls, rel_mon_calls, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_call_timestamp, nam_mon_timestamp, fld_time, 0, 0, 0, 0)
|
||||
FIELD(f_mon_call_src_line, nam_mon_src_line, fld_src_info, 0, 0, 0, 0)
|
||||
FIELD(f_mon_call_src_column, nam_mon_src_column, fld_src_info, 0, 0, 0, 0)
|
||||
FIELD(f_mon_call_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
RELATION(nam_mon_io_stats, rel_mon_io_stats, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_io_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
FIELD(f_mon_io_page_reads, nam_mon_page_reads, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_io_page_writes, nam_mon_page_writes, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_io_page_fetches, nam_mon_page_fetches, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_io_page_marks, nam_mon_page_marks, fld_counter, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
RELATION(nam_mon_rec_stats, rel_mon_rec_stats, ODS_11_1, rel_virtual)
|
||||
FIELD(f_mon_rec_stat_id, nam_mon_stat_id, fld_stat_id, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_seq_reads, nam_mon_rec_seq_reads, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_idx_reads, nam_mon_rec_idx_reads, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_inserts, nam_mon_rec_inserts, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_updates, nam_mon_rec_updates, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_deletes, nam_mon_rec_deletes, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_backouts, nam_mon_rec_backouts, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_purges, nam_mon_rec_purges, fld_counter, 0, 0, 0, 0)
|
||||
FIELD(f_mon_rec_expunges, nam_mon_rec_expunges, fld_counter, 0, 0, 0, 0)
|
||||
END_RELATION
|
||||
|
Loading…
Reference in New Issue
Block a user