SlideShare une entreprise Scribd logo
1  sur  48
Resolving Firebird
Performance Problems
© IBSurgeon
www.ib-aid.com
Usually big production database runs at
• Firebird 2.5
• Classic or SuperClassic architecture
• They can scale accross multiple CPU/cores!
• In Firebird 3 SuperServer is the better choice…
• but now let’s talk about 2.5 Classic and SuperClassic
What are performance indicators to
monitor in Firebird 2.5?
1. Lock table parameters
2. Monitoring record versions and garbage collection
3. Transactions
1. Long running transactions
2. Rolled back transactions
4. Temporary files – quantity and size
5. Connections, SQL queries and transactions
LOCK TABLE MONITORING
fb_inet_serverfb_inet_server
How lock table works
fb_inet_server
Firebird
Page cache Page cache Page cache
Page X
How to resolve a
write conflict when
changing the same
page?
How lock table works
fb_inet_server fb_inet_server fb_inet_server
mapped
Lock table
mapped mapped
shared memory
All requests to access
internal database objects go
through lock table
Why should we monitor lock table
parameters?
• Lock table is a critical part of Classic and SuperClassic
architectures
• Access to shared objects is implemented through locks in
Lock table…
Analysis of lock table parameters is the easiest
way to reveal problems with concurrent access
Lock table analysis - raw
• Fb_lock_print –d <database_name>
• LOCK_HEADER BLOCK
• Version: 17, Active owner: 0, Length: 6291456, Used: 5517236
• Flags: 0x0001
• Enqs: 10906251, Converts: 58907, Rejects: 22373, Blocks:
210859
• Deadlock scans: 5841, Deadlocks: 0, Scan interval: 10
• Acquires: 13636997, Acquire blocks: 558879, Spin count: 0
• Mutex wait: 4.1%
• Hash slots: 2003, Hash lengths (min/avg/max): 2/ 11/ 26
• Remove node: 0, Insert queue: 0, Insert prior: 0
• Owners (107): forward: 26696, backward: 5517140
• Free owners: *empty*
• Free locks (1630): forward: 3878196, backward: 2264580
• Free requests (793): forward: 5412916, backward: 1906516
• Lock Ordering: Enabled
Lock table analysis – where to look
• Fb_lock_print –d <database_name>
• LOCK_HEADER BLOCK
• Version: 17, Active owner: 0, Length: 6291456, Used: 5517236
• Flags: 0x0001
• Enqs: 10906251, Converts: 58907, Rejects: 22373, Blocks:
210859
• Deadlock scans: 5841, Deadlocks: 0, Scan interval: 10
• Acquires: 13636997, Acquire blocks: 558879, Spin count: 0
• Mutex wait: 4.1%
• Hash slots: 2003, Hash lengths (min/avg/max): 2/ 11/ 26
• Remove node: 0, Insert queue: 0, Insert prior: 0
• Owners (107): forward: 26696, backward: 5517140
• Free owners: *empty*
• Free locks (1630): forward: 3878196, backward: 2264580
• Free requests (793): forward: 5412916, backward: 1906516
• Lock Ordering: Enabled
Thresholds and recommendations
Essential values: Firebird.conf params to tune:
Length: 6291456 LockMemSize - default is 1Mb
Set at least:
Cache_pages * max_connections_count
* 100
Hash slots: 2003, Hash lengths
(min/avg/max): 2/ 11/ 26
LockHashSlots = 1009
Prime number. Set x20, like 20011
Mutex wait: 4.1% No parameter to adjust. More than 10%
could be a problem, check hardware and
concurrency settings
Owners (107) Number of connections for server
Use optimized Firebird configuration files from IBSurgeon:
http://ib-aid.com/en/optimized-firebird-configuration/
How to monitor lock table
• 1) Command prompt (on the server only), run every N min
fb_lock_print -d E:OLTP-EMULoltp30.fdb
• 2) Alerts and automatic
recommendations
Monitoring record versions and
garbage collection in Firebird
What is a record version?
TR50 TR60
UPDATE
set data =200read
N Tx Data
1 10 100
60 200
...
read
write
Different transactions can see different versions of
the record.
Why many record versions are bad
The more
versions record
has, the more
scan operations
server does to
find necessary
version
After data load or
restore – no
versions
• When UPDATE changes indexed fields, indices also must
be updated, and - UPDATE does not update keys in the
index, it adds new keys for new record version!
• DELETE does not delete index keys!
N Tx Data
1 10 100
60 200
...
Index key
= 100
Index key
= 200
Why many record versions are bad
What to monitor?
Database statistics
• Database statistics shows information about Record
Versions and Max Versions
• Taking database statistics can be long!
How to monitor
1. With gstat command line tool
2. With HQbird Firebird Database Analyst
More details: https://www.youtube.com/watch?v=_KZqXcgwN98
Goal of every Firebird developer is
to avoid creating versions for records!
Not only because server slowly reads
multiple record versions, but also
because of
GARBAGE COLLECTION
What is garbage and how it is collected
• When record versions become obsolete and non-
interested by any transaction, it is considered as
garbage and need to be cleaned.
• Garbage collection is a process of removing
unnecessary records versions
• It can be cooperative (Classic or SuperClassic) or
background (SuperServer)
Why should we monitor garbage
collection?
• It consumes resources.
• We should locate and fix those parts of the
application(s) which produce many record
versions which increase an intensity of GC
How to monitor GC?
• 1) Manual SQL queries to MON$ tables
• 2) HQbird Firebird MonLogger
How to decrease number of garbage
versions?
1. Use as short write transactions as possible
2. For read-only operations use (if possible)
transactions READ COMMITTED READ-ONLY
If you see a lot of record versions, and you are not
sure how to fix it, consider to order our Database
Optimization service:
http://ib-aid.com/en/firebird-interbase-performance-
optimization-service/
Monitoring transactions in
Firebird
Why to monitor transactions?
Transactions are key indicators of versioning
processes in Firebird database.
2 main problems
1. Long-running [writeable] transactions
2. Rolled back transactions
Gstat –h gives us snaphot of transactions
Database header page information:
Flags 0
Checksum 12345
Generation 1564
Page size 4096
ODS version 10.1
Oldest transaction 10009
Oldest active 20001
Oldest snapshot 20001
Next transaction 25007
Bumped transaction 1
Sequence number 0
Next attachment ID 1
Implementation ID 16
Shadow count 0
Page buffers 3000
Next header page 0
Database dialect 1
Creation date Nov 1, 2015 15:55:55
Long-running transactions
• All transactions have sequential numbers from 1 to…
• Oldest Active Transaction – currently active transaction
with the minimal number
Oldest transaction 10009
Oldest active 20001
Oldest snapshot 20001
Next transaction 25007
Interval NEXT – OAT shows number of potentially active
transactions – server cannot clean versions created by
transactions with numbers > OAT
How to track long running active transactions
in Firebird?
• 1. Manual tracking of gstat –h output (check every N
minutes)
• 2. Alerts from HQbird FBDataGuard
How to fix long running active
transactions in Firebird?
It is possible to find who is running long-
running transaction and CANCEL it
1. Manual query to MON$ tables
2. HQbird Firebird MON$Logger (GUI)
Rolled back transactions
• When some transaction is marked in transaction inventory
as rolled back, it prevents record versions beeing
cleaned by collective or background garbage collection
Oldest transaction 10009
Oldest active 20001
Oldest snapshot 20001
Next transaction 25007
Interval Oldest Snapshot – Oldest Interesting
determines the need for sweep
Sweep
• Sweep reads whole database from the beginning
to the end and cleans garbage record versions
• Sweep is necessary when OST-OIT interval
becomes big
How to make sweep
• Autosweep
• by default 20000
• Starts immediately when interval > threshold
• It causes slowness at unpredicted moments
• Manual sweep
• Scheduled sweep during the inactivity period of
time
• Can be run manually with gfix –sweep or
scheduled in HQbird FBDataGuard
Sweep must be controlled!
• If sweep did not succeed to align
transaction markers, it can happen due to
the serious problem/corruption!
• HQbird FBDataGuard checks sweep status
TEMP FILES
Temp files
• Temp files are created in the default temp folder
or in folders specified by TempDirectories in
firebird.conf
• Actually they are written to the disk only if size of
all sort files is more than TempCacheLimit
parameter
• It is better to have sorting in memory
How to track Temp files
1. Manually check size and quantity of temp files
(fb_sortxxx) in all temp folders
2. HQbird FBDataGuard monitors temp files size and
quantity, and sends warnings if necessary
How to move temp files to memory
• Increase TempCacheLimit parameter
• Warnings:
• At Classic TempCacheLimit is allocated for each
process
• 32bit processes have 2Gb limitation of memory to
address
Use optimized configuration files from IBSurgeon and
HQbird!
http://ib-aid.com/en/optimized-firebird-configuration/
Monitor connections,
transactions, and SQL queries
Why to monitor Firebird connections?
• Number of connections should be constantly monitored:
• Peaks of connections
• Firebird Classic/SuperClassic consume RAM as
Number_Of_Connections x Page Buffers
• In case of peaks can consume all RAM and go to swap – slowness!
• Application can do more than 1 connection to the database
• By mistake
• By design
• In case of connection pool – adjust the size of the pool and its
increment
• Suspicious connections
• Long running connections and connections from developer tools
• Connections from non-standard applications
How to monitor connections
1. Manually run SELECT count(*) FROM
MON$ATTACHMENTS
2. Use HQbird
1. FBDataGuard constantly monitors number of connections and
send alerts if their number grows too much
2. MonLogger can be used to go deep and get detailed information
about connections: memory, IO, garbage collection
Transactions
• Yes, again!
• Besides monitoring of intervals between transactions
markers (Next-OAT, OIT-OST), also we should check
these important things, which can affect Firebird
performance:
1. Transaction’s parameters (isolation level, wait/nowait)
2. Transactions flows and their relation with business
logic
3. Transaction-level statistics (IO, time to live)
Transaction’s parameters
• Transactions parameters must correspond to business
logic.
• Several often mistakes
• Non-modyfing queries (SELECT) are started in read-write mode
• Should be in READ ONLY
• Snapshot are used for operational queries, instead of read-
commited
• It should be used only for queries where consistency is really required
(snapshots)
Transactions flows mistakes
• Transaction (other then read-committed read only) never
ends, expires due to connection closing, and leads to
ROLLBACK
• Only 1 sentence in the transaction
• For example, refreshing query with timer:
• Quickly exhausts 2 billion limit of transactions
• it should be run in permanent read committed read only transaction
• Using the only read-write transaction for all operations
• Better split read-only and write operations
How to track transactions flows and
transactions parameters? - FBScanner
HQbird FBScanner allows to track transactions
flows: parameters, containing queries, plans, etc.
How to track transactions flows and
transactions parameters? - PerfMon
• HQbird Firebird Performance Monitor (PerfMon) uses
TraceAPI to capture all engine events – connections,
queries, transactions, stored procedures, triggers,
execution plans, execution statistics
• Works correctly only at Firebird 2.5.3+ versions
Quick check of problems with transactions
• HQbird MonLogger gives a fast and detailed overview of
active transactions in the system
HQbird tools for SQL and transactions
monitoring and optimization
HQbird FBScanner
+ works as a proxy, non-invasive tool, can be installed on
separate server and track only selected workstations
— cannot track stored procedures and triggers
HQbird PerfMon
+ works with TraceAPI, can monitor everything
— TraceAPI significantly supresses performance
HQbird MonLogger
+ Great ad-hoc tool, fast
— Captures only snapshots, lack of important information
IBSurgeon Firebird Optimization service
We can increase the performance of your database
http://ib-aid.com/en/firebird-interbase-performance-
optimization-service/
Thank you and don’t forget these links:
IBSurgeon optimized configuration files
http://ib-aid.com/en/optimized-firebird-configuration/
Firebird Hardware Guide
http://ib-aid.com/download/docs/Firebird_Hardware_Guide_IBSurgeon.pdf
Contact us: support@ib-aid.com

Contenu connexe

Tendances

Tendances (20)

InnoDB Internal
InnoDB InternalInnoDB Internal
InnoDB Internal
 
InnoDB Flushing and Checkpoints
InnoDB Flushing and CheckpointsInnoDB Flushing and Checkpoints
InnoDB Flushing and Checkpoints
 
MySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB StatusMySQL 5.5 Guide to InnoDB Status
MySQL 5.5 Guide to InnoDB Status
 
What is new in MariaDB 10.6?
What is new in MariaDB 10.6?What is new in MariaDB 10.6?
What is new in MariaDB 10.6?
 
OSA Con 2022 - Apache Iceberg_ An Architectural Look Under the Covers - Alex ...
OSA Con 2022 - Apache Iceberg_ An Architectural Look Under the Covers - Alex ...OSA Con 2022 - Apache Iceberg_ An Architectural Look Under the Covers - Alex ...
OSA Con 2022 - Apache Iceberg_ An Architectural Look Under the Covers - Alex ...
 
Memory Management in Apache Spark
Memory Management in Apache SparkMemory Management in Apache Spark
Memory Management in Apache Spark
 
Improving Apache Spark Downscaling
 Improving Apache Spark Downscaling Improving Apache Spark Downscaling
Improving Apache Spark Downscaling
 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patterns
 
Kafka on ZFS: Better Living Through Filesystems
Kafka on ZFS: Better Living Through Filesystems Kafka on ZFS: Better Living Through Filesystems
Kafka on ZFS: Better Living Through Filesystems
 
Java Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame GraphsJava Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame Graphs
 
Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
Efficient Data Storage for Analytics with Parquet 2.0 - Hadoop Summit 2014
 
Reshape Data Lake (as of 2020.07)
Reshape Data Lake (as of 2020.07)Reshape Data Lake (as of 2020.07)
Reshape Data Lake (as of 2020.07)
 
Hive Bucketing in Apache Spark with Tejas Patil
Hive Bucketing in Apache Spark with Tejas PatilHive Bucketing in Apache Spark with Tejas Patil
Hive Bucketing in Apache Spark with Tejas Patil
 
How to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They WorkHow to Actually Tune Your Spark Jobs So They Work
How to Actually Tune Your Spark Jobs So They Work
 
Delta Architecture
Delta ArchitectureDelta Architecture
Delta Architecture
 
PostgreSQL and RAM usage
PostgreSQL and RAM usagePostgreSQL and RAM usage
PostgreSQL and RAM usage
 
MySQL Space Management
MySQL Space ManagementMySQL Space Management
MySQL Space Management
 
Optimizing Delta/Parquet Data Lakes for Apache Spark
Optimizing Delta/Parquet Data Lakes for Apache SparkOptimizing Delta/Parquet Data Lakes for Apache Spark
Optimizing Delta/Parquet Data Lakes for Apache Spark
 
Performance tuning in BlueStore & RocksDB - Li Xiaoyan
Performance tuning in BlueStore & RocksDB - Li XiaoyanPerformance tuning in BlueStore & RocksDB - Li Xiaoyan
Performance tuning in BlueStore & RocksDB - Li Xiaoyan
 
MySQL on ZFS
MySQL on ZFSMySQL on ZFS
MySQL on ZFS
 

En vedette (6)

オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpringオープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
オープンソースRDBMS新機能ランダウンOSC2017TokyoSpring
 
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)Understandung Firebird optimizer, by Dmitry Yemanov (in English)
Understandung Firebird optimizer, by Dmitry Yemanov (in English)
 
Firebird v2.1.4.installation guide
Firebird v2.1.4.installation guideFirebird v2.1.4.installation guide
Firebird v2.1.4.installation guide
 
Firebird recovery tools and techniques by IBSurgeon
Firebird recovery tools and techniques by IBSurgeonFirebird recovery tools and techniques by IBSurgeon
Firebird recovery tools and techniques by IBSurgeon
 
Firebird grupo3
Firebird grupo3Firebird grupo3
Firebird grupo3
 
Mer modelo entidad relación
Mer   modelo entidad relaciónMer   modelo entidad relación
Mer modelo entidad relación
 

Similaire à Resolving Firebird performance problems

Deployment Strategy
Deployment StrategyDeployment Strategy
Deployment Strategy
MongoDB
 
Oracle Performance On Linux X86 systems
Oracle  Performance On Linux  X86 systems Oracle  Performance On Linux  X86 systems
Oracle Performance On Linux X86 systems
Baruch Osoveskiy
 
Webinar: Faster Log Indexing with Fusion
Webinar: Faster Log Indexing with FusionWebinar: Faster Log Indexing with Fusion
Webinar: Faster Log Indexing with Fusion
Lucidworks
 

Similaire à Resolving Firebird performance problems (20)

Deployment Strategies (Mongo Austin)
Deployment Strategies (Mongo Austin)Deployment Strategies (Mongo Austin)
Deployment Strategies (Mongo Austin)
 
5 Pitfalls to Avoid with MongoDB
5 Pitfalls to Avoid with MongoDB5 Pitfalls to Avoid with MongoDB
5 Pitfalls to Avoid with MongoDB
 
Best practices for MySQL High Availability
Best practices for MySQL High AvailabilityBest practices for MySQL High Availability
Best practices for MySQL High Availability
 
Deployment Strategy
Deployment StrategyDeployment Strategy
Deployment Strategy
 
Deployment Strategies
Deployment StrategiesDeployment Strategies
Deployment Strategies
 
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
(WEB401) Optimizing Your Web Server on AWS | AWS re:Invent 2014
 
Reduced instruction set computers
Reduced instruction set computersReduced instruction set computers
Reduced instruction set computers
 
Taking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout SessionTaking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout Session
 
Taking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout SessionTaking Splunk to the Next Level - Architecture Breakout Session
Taking Splunk to the Next Level - Architecture Breakout Session
 
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
[DBA]_HiramFleitas_SQL_PASS_Summit_2017_Summary
 
Oracle Performance On Linux X86 systems
Oracle  Performance On Linux  X86 systems Oracle  Performance On Linux  X86 systems
Oracle Performance On Linux X86 systems
 
Webinar: Faster Log Indexing with Fusion
Webinar: Faster Log Indexing with FusionWebinar: Faster Log Indexing with Fusion
Webinar: Faster Log Indexing with Fusion
 
Openstack meetup lyon_2017-09-28
Openstack meetup lyon_2017-09-28Openstack meetup lyon_2017-09-28
Openstack meetup lyon_2017-09-28
 
Designs, Lessons and Advice from Building Large Distributed Systems
Designs, Lessons and Advice from Building Large Distributed SystemsDesigns, Lessons and Advice from Building Large Distributed Systems
Designs, Lessons and Advice from Building Large Distributed Systems
 
Scality S3 Server: Node js Meetup Presentation
Scality S3 Server: Node js Meetup PresentationScality S3 Server: Node js Meetup Presentation
Scality S3 Server: Node js Meetup Presentation
 
Streaming in Practice - Putting Apache Kafka in Production
Streaming in Practice - Putting Apache Kafka in ProductionStreaming in Practice - Putting Apache Kafka in Production
Streaming in Practice - Putting Apache Kafka in Production
 
z/VM Performance Analysis
z/VM Performance Analysisz/VM Performance Analysis
z/VM Performance Analysis
 
Stephan Ewen - Experiences running Flink at Very Large Scale
Stephan Ewen -  Experiences running Flink at Very Large ScaleStephan Ewen -  Experiences running Flink at Very Large Scale
Stephan Ewen - Experiences running Flink at Very Large Scale
 
Google file system
Google file systemGoogle file system
Google file system
 
Kafka to the Maxka - (Kafka Performance Tuning)
Kafka to the Maxka - (Kafka Performance Tuning)Kafka to the Maxka - (Kafka Performance Tuning)
Kafka to the Maxka - (Kafka Performance Tuning)
 

Plus de Alexey Kovyazin

Firebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachFirebird Anti-Corruption Approach
Firebird Anti-Corruption Approach
Alexey Kovyazin
 

Plus de Alexey Kovyazin (20)

Fail-Safe Cluster for FirebirdSQL and something more
Fail-Safe Cluster for FirebirdSQL and something moreFail-Safe Cluster for FirebirdSQL and something more
Fail-Safe Cluster for FirebirdSQL and something more
 
Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
 
How Firebird transactions work
How Firebird transactions workHow Firebird transactions work
How Firebird transactions work
 
Life with big Firebird databases
Life with big Firebird databasesLife with big Firebird databases
Life with big Firebird databases
 
Professional tools for Firebird optimization and maintenance from IBSurgeon
Professional tools for Firebird optimization and maintenance from IBSurgeonProfessional tools for Firebird optimization and maintenance from IBSurgeon
Professional tools for Firebird optimization and maintenance from IBSurgeon
 
Firebird migration: from Firebird 1.5 to Firebird 2.5
Firebird migration: from Firebird 1.5 to Firebird 2.5Firebird migration: from Firebird 1.5 to Firebird 2.5
Firebird migration: from Firebird 1.5 to Firebird 2.5
 
Firebird migration: from Firebird 1.5 to Firebird 2.5
Firebird migration: from Firebird 1.5 to Firebird 2.5Firebird migration: from Firebird 1.5 to Firebird 2.5
Firebird migration: from Firebird 1.5 to Firebird 2.5
 
Firebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachFirebird Anti-Corruption Approach
Firebird Anti-Corruption Approach
 
Firebird Dataguard (Russian)
Firebird Dataguard (Russian)Firebird Dataguard (Russian)
Firebird Dataguard (Russian)
 
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
 
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
Firebird DataGuard -  Еще раз об уверенности в завтрашнем днеFirebird DataGuard -  Еще раз об уверенности в завтрашнем дне
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
 
Firebird usage promo draft
Firebird usage promo draftFirebird usage promo draft
Firebird usage promo draft
 
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
FBScanner: IBSurgeon's tool to solve all types of performance problems with F...
 
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
Firebird 2.5 - вектор дальнейшего развития, Dmitry Yemanov, (in Russian)
 
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
Firebird: cost-based optimization and statistics, by Dmitry Yemanov (in English)
 
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
 
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
Open Source: взгляд изнутри, Дмитрий Еманов (The Firebird Project) (in Russian)
 
Firebird Scalability, by Dmitry Yemanov (in English)
Firebird Scalability, by Dmitry Yemanov (in English)Firebird Scalability, by Dmitry Yemanov (in English)
Firebird Scalability, by Dmitry Yemanov (in English)
 
Firebird 2.1 What's New by Vladislav Khorsun (English)
Firebird 2.1 What's New by Vladislav Khorsun (English)Firebird 2.1 What's New by Vladislav Khorsun (English)
Firebird 2.1 What's New by Vladislav Khorsun (English)
 
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
 

Dernier

The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 

Dernier (20)

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456LEVEL 5   - SESSION 1 2023 (1).pptx - PDF 123456
LEVEL 5 - SESSION 1 2023 (1).pptx - PDF 123456
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Resolving Firebird performance problems

  • 2. Usually big production database runs at • Firebird 2.5 • Classic or SuperClassic architecture • They can scale accross multiple CPU/cores! • In Firebird 3 SuperServer is the better choice… • but now let’s talk about 2.5 Classic and SuperClassic
  • 3. What are performance indicators to monitor in Firebird 2.5? 1. Lock table parameters 2. Monitoring record versions and garbage collection 3. Transactions 1. Long running transactions 2. Rolled back transactions 4. Temporary files – quantity and size 5. Connections, SQL queries and transactions
  • 5. fb_inet_serverfb_inet_server How lock table works fb_inet_server Firebird Page cache Page cache Page cache Page X How to resolve a write conflict when changing the same page?
  • 6. How lock table works fb_inet_server fb_inet_server fb_inet_server mapped Lock table mapped mapped shared memory All requests to access internal database objects go through lock table
  • 7. Why should we monitor lock table parameters? • Lock table is a critical part of Classic and SuperClassic architectures • Access to shared objects is implemented through locks in Lock table… Analysis of lock table parameters is the easiest way to reveal problems with concurrent access
  • 8. Lock table analysis - raw • Fb_lock_print –d <database_name> • LOCK_HEADER BLOCK • Version: 17, Active owner: 0, Length: 6291456, Used: 5517236 • Flags: 0x0001 • Enqs: 10906251, Converts: 58907, Rejects: 22373, Blocks: 210859 • Deadlock scans: 5841, Deadlocks: 0, Scan interval: 10 • Acquires: 13636997, Acquire blocks: 558879, Spin count: 0 • Mutex wait: 4.1% • Hash slots: 2003, Hash lengths (min/avg/max): 2/ 11/ 26 • Remove node: 0, Insert queue: 0, Insert prior: 0 • Owners (107): forward: 26696, backward: 5517140 • Free owners: *empty* • Free locks (1630): forward: 3878196, backward: 2264580 • Free requests (793): forward: 5412916, backward: 1906516 • Lock Ordering: Enabled
  • 9. Lock table analysis – where to look • Fb_lock_print –d <database_name> • LOCK_HEADER BLOCK • Version: 17, Active owner: 0, Length: 6291456, Used: 5517236 • Flags: 0x0001 • Enqs: 10906251, Converts: 58907, Rejects: 22373, Blocks: 210859 • Deadlock scans: 5841, Deadlocks: 0, Scan interval: 10 • Acquires: 13636997, Acquire blocks: 558879, Spin count: 0 • Mutex wait: 4.1% • Hash slots: 2003, Hash lengths (min/avg/max): 2/ 11/ 26 • Remove node: 0, Insert queue: 0, Insert prior: 0 • Owners (107): forward: 26696, backward: 5517140 • Free owners: *empty* • Free locks (1630): forward: 3878196, backward: 2264580 • Free requests (793): forward: 5412916, backward: 1906516 • Lock Ordering: Enabled
  • 10. Thresholds and recommendations Essential values: Firebird.conf params to tune: Length: 6291456 LockMemSize - default is 1Mb Set at least: Cache_pages * max_connections_count * 100 Hash slots: 2003, Hash lengths (min/avg/max): 2/ 11/ 26 LockHashSlots = 1009 Prime number. Set x20, like 20011 Mutex wait: 4.1% No parameter to adjust. More than 10% could be a problem, check hardware and concurrency settings Owners (107) Number of connections for server Use optimized Firebird configuration files from IBSurgeon: http://ib-aid.com/en/optimized-firebird-configuration/
  • 11. How to monitor lock table • 1) Command prompt (on the server only), run every N min fb_lock_print -d E:OLTP-EMULoltp30.fdb • 2) Alerts and automatic recommendations
  • 12. Monitoring record versions and garbage collection in Firebird
  • 13. What is a record version? TR50 TR60 UPDATE set data =200read N Tx Data 1 10 100 60 200 ... read write Different transactions can see different versions of the record.
  • 14. Why many record versions are bad The more versions record has, the more scan operations server does to find necessary version After data load or restore – no versions
  • 15. • When UPDATE changes indexed fields, indices also must be updated, and - UPDATE does not update keys in the index, it adds new keys for new record version! • DELETE does not delete index keys! N Tx Data 1 10 100 60 200 ... Index key = 100 Index key = 200 Why many record versions are bad
  • 16. What to monitor? Database statistics • Database statistics shows information about Record Versions and Max Versions • Taking database statistics can be long!
  • 17. How to monitor 1. With gstat command line tool 2. With HQbird Firebird Database Analyst More details: https://www.youtube.com/watch?v=_KZqXcgwN98
  • 18. Goal of every Firebird developer is to avoid creating versions for records! Not only because server slowly reads multiple record versions, but also because of GARBAGE COLLECTION
  • 19. What is garbage and how it is collected • When record versions become obsolete and non- interested by any transaction, it is considered as garbage and need to be cleaned. • Garbage collection is a process of removing unnecessary records versions • It can be cooperative (Classic or SuperClassic) or background (SuperServer)
  • 20. Why should we monitor garbage collection? • It consumes resources. • We should locate and fix those parts of the application(s) which produce many record versions which increase an intensity of GC
  • 21. How to monitor GC? • 1) Manual SQL queries to MON$ tables • 2) HQbird Firebird MonLogger
  • 22. How to decrease number of garbage versions? 1. Use as short write transactions as possible 2. For read-only operations use (if possible) transactions READ COMMITTED READ-ONLY If you see a lot of record versions, and you are not sure how to fix it, consider to order our Database Optimization service: http://ib-aid.com/en/firebird-interbase-performance- optimization-service/
  • 24. Why to monitor transactions? Transactions are key indicators of versioning processes in Firebird database. 2 main problems 1. Long-running [writeable] transactions 2. Rolled back transactions
  • 25. Gstat –h gives us snaphot of transactions Database header page information: Flags 0 Checksum 12345 Generation 1564 Page size 4096 ODS version 10.1 Oldest transaction 10009 Oldest active 20001 Oldest snapshot 20001 Next transaction 25007 Bumped transaction 1 Sequence number 0 Next attachment ID 1 Implementation ID 16 Shadow count 0 Page buffers 3000 Next header page 0 Database dialect 1 Creation date Nov 1, 2015 15:55:55
  • 26. Long-running transactions • All transactions have sequential numbers from 1 to… • Oldest Active Transaction – currently active transaction with the minimal number Oldest transaction 10009 Oldest active 20001 Oldest snapshot 20001 Next transaction 25007 Interval NEXT – OAT shows number of potentially active transactions – server cannot clean versions created by transactions with numbers > OAT
  • 27. How to track long running active transactions in Firebird? • 1. Manual tracking of gstat –h output (check every N minutes) • 2. Alerts from HQbird FBDataGuard
  • 28. How to fix long running active transactions in Firebird? It is possible to find who is running long- running transaction and CANCEL it 1. Manual query to MON$ tables 2. HQbird Firebird MON$Logger (GUI)
  • 29. Rolled back transactions • When some transaction is marked in transaction inventory as rolled back, it prevents record versions beeing cleaned by collective or background garbage collection Oldest transaction 10009 Oldest active 20001 Oldest snapshot 20001 Next transaction 25007 Interval Oldest Snapshot – Oldest Interesting determines the need for sweep
  • 30. Sweep • Sweep reads whole database from the beginning to the end and cleans garbage record versions • Sweep is necessary when OST-OIT interval becomes big
  • 31. How to make sweep • Autosweep • by default 20000 • Starts immediately when interval > threshold • It causes slowness at unpredicted moments • Manual sweep • Scheduled sweep during the inactivity period of time • Can be run manually with gfix –sweep or scheduled in HQbird FBDataGuard
  • 32. Sweep must be controlled! • If sweep did not succeed to align transaction markers, it can happen due to the serious problem/corruption! • HQbird FBDataGuard checks sweep status
  • 34. Temp files • Temp files are created in the default temp folder or in folders specified by TempDirectories in firebird.conf • Actually they are written to the disk only if size of all sort files is more than TempCacheLimit parameter • It is better to have sorting in memory
  • 35. How to track Temp files 1. Manually check size and quantity of temp files (fb_sortxxx) in all temp folders 2. HQbird FBDataGuard monitors temp files size and quantity, and sends warnings if necessary
  • 36. How to move temp files to memory • Increase TempCacheLimit parameter • Warnings: • At Classic TempCacheLimit is allocated for each process • 32bit processes have 2Gb limitation of memory to address Use optimized configuration files from IBSurgeon and HQbird! http://ib-aid.com/en/optimized-firebird-configuration/
  • 38. Why to monitor Firebird connections? • Number of connections should be constantly monitored: • Peaks of connections • Firebird Classic/SuperClassic consume RAM as Number_Of_Connections x Page Buffers • In case of peaks can consume all RAM and go to swap – slowness! • Application can do more than 1 connection to the database • By mistake • By design • In case of connection pool – adjust the size of the pool and its increment • Suspicious connections • Long running connections and connections from developer tools • Connections from non-standard applications
  • 39. How to monitor connections 1. Manually run SELECT count(*) FROM MON$ATTACHMENTS 2. Use HQbird 1. FBDataGuard constantly monitors number of connections and send alerts if their number grows too much 2. MonLogger can be used to go deep and get detailed information about connections: memory, IO, garbage collection
  • 40. Transactions • Yes, again! • Besides monitoring of intervals between transactions markers (Next-OAT, OIT-OST), also we should check these important things, which can affect Firebird performance: 1. Transaction’s parameters (isolation level, wait/nowait) 2. Transactions flows and their relation with business logic 3. Transaction-level statistics (IO, time to live)
  • 41. Transaction’s parameters • Transactions parameters must correspond to business logic. • Several often mistakes • Non-modyfing queries (SELECT) are started in read-write mode • Should be in READ ONLY • Snapshot are used for operational queries, instead of read- commited • It should be used only for queries where consistency is really required (snapshots)
  • 42. Transactions flows mistakes • Transaction (other then read-committed read only) never ends, expires due to connection closing, and leads to ROLLBACK • Only 1 sentence in the transaction • For example, refreshing query with timer: • Quickly exhausts 2 billion limit of transactions • it should be run in permanent read committed read only transaction • Using the only read-write transaction for all operations • Better split read-only and write operations
  • 43. How to track transactions flows and transactions parameters? - FBScanner HQbird FBScanner allows to track transactions flows: parameters, containing queries, plans, etc.
  • 44. How to track transactions flows and transactions parameters? - PerfMon • HQbird Firebird Performance Monitor (PerfMon) uses TraceAPI to capture all engine events – connections, queries, transactions, stored procedures, triggers, execution plans, execution statistics • Works correctly only at Firebird 2.5.3+ versions
  • 45. Quick check of problems with transactions • HQbird MonLogger gives a fast and detailed overview of active transactions in the system
  • 46. HQbird tools for SQL and transactions monitoring and optimization HQbird FBScanner + works as a proxy, non-invasive tool, can be installed on separate server and track only selected workstations — cannot track stored procedures and triggers HQbird PerfMon + works with TraceAPI, can monitor everything — TraceAPI significantly supresses performance HQbird MonLogger + Great ad-hoc tool, fast — Captures only snapshots, lack of important information
  • 47. IBSurgeon Firebird Optimization service We can increase the performance of your database http://ib-aid.com/en/firebird-interbase-performance- optimization-service/
  • 48. Thank you and don’t forget these links: IBSurgeon optimized configuration files http://ib-aid.com/en/optimized-firebird-configuration/ Firebird Hardware Guide http://ib-aid.com/download/docs/Firebird_Hardware_Guide_IBSurgeon.pdf Contact us: support@ib-aid.com