8
0
mirror of https://github.com/FirebirdSQL/firebird.git synced 2025-01-22 20:43:02 +01:00
firebird-mirror/doc/README.performance_monitoring

52 lines
2.1 KiB
Plaintext
Raw Normal View History

Performance analysis with Firebird.
Document version 0.1
Created by Nickolay Samofatov
Performance monitoring framework is consisted of 2 parts:
- Trace API
- Reference implementation of analysis plugin
Trace API.
Trace API allows to plug a monitoring module into the engine and notify it
of processes happening there. List of analysis plugins is specified in
firebird.conf parameter TracePlugins. Each trace plugin receives notifications
on each database attached as a call of procedure having following signature:
ISC_STATUS trace_attach(ISC_STATUS* status, TraceDatabase* db);
Conceptually db is the database trace interface, but it is implemented as a
structure of function pointers and void* object pointer.
Given this interface plugin may install hooks for particular events and receive
notifications on them. In fact, set of hooks is also implemented as a structure
with function pointers.
See ntrace.h module for definitions of these structures and events supported.
Default analysis module.
Reference implementation of analysis plugin is centered around a concept of
performance snapshot. Snapshot detail may vary, but in any case it contains
information on all activities performed by server during a given period of time,
possibly in aggregated form. All snapshots may be compared to allow quanititive
measurements of performance improvements due to various optimization activities
or changes in user applications and infrastucture.
Snapshot data is collected by trace module in raw form in a binary log file and
then may be loaded into a stats database using ntrace utility.
Stored snapshots may contain data on usage of indices, statements executed,
their plans and performance counters, IO statistics and other performance data.
Level of detail for information collected is set up in analysis trace module
configuration file on per-database basis.
Default analysis module does not have GUI and only provides a database with
data on server activities and some stored procedures to use and maintain it.
It is expected that third parties develop GUI tools, custom trace modules and
statistics tools to statisfy rich client needs.