SlideShare une entreprise Scribd logo
1  sur  70
How Firebird transactions work
Alexey Kovyazin
www.IBSurgeon.com
2
• Tools and consulting
• Platinum Sponsor of Firebird
Foundation
• Founded in 2002: 12 years of
Firebird and InterBase recoveries
and consulting
• Based in Moscow, Russia
3Agenda
What is transaction? Why we need it?
How we will present about transactions
Records and versions
Transactions and record versions
Transaction Inventory
Record visibility in transactions
Transaction Markers and their evaluation
Some conclusions
4What is transaction?
• Transaction as a general concept of any dynamic system
• “Classic” example
• begin
• -- move money from account1 to account2
• Decrease account1
• Increase account2
• end – commit/rollback
• Transaction Managers
5Database transaction
definition
• a unit of work performed against a database, and treated
in a coherent and reliable way independent of other
transactions.
• A database transaction, by definition, must be atomic,
consistent, isolated and durable
6
In ideal world
only serial operations
Insert into T1(i1)
values (100);
SELECT i1
FROM T1
Insert into T1(i1)
values (200);
7
8
9In real world
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx11
INSERT T1
Tx14
commit
UPDATE T1
nowait
commit
Tx20
UPDATE T1
rollback
UPDATE T1
10The ultimate purpose of
transaction:
• Concurrent execution of operations should lead to the
exactly the same result as sequental execution of
operations.
For each [snapshot] transaction Firebird engine should
maintain a stable view of the database.
In simple words: each transaction should run as the only
transaction.
11
12
How Firebird does implement stable
view for each transactions?
13How we will present about transactions
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 11
Transaction’s
number
Start End
14How we will present about transactions
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 11
commit
Tx 12
rollback
Transaction’s
result
Transaction’s
result
15How we will present about transactions
Tx 11
commit
snapshot
Transaction’s
parameters
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
16How we will present about transactions
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 11
commit
Insert into T1(i1)
values (100);
snapshot
Operation in the frames of
transaction
17How we will present about transactions
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 11
commit
Insert into T1(i1)
values (100);
SELECT i1
FROM T1
snapshot
i1
100
Result of operation
18
Now let's start...
Basics your [probably] know:
- Everything in the database is done within transaction
- Each transaction gets own incremental number
1, 2, 3, … etc
- Firebird is a multi-version engine (each record in Firebird
can have versions)
19
Record version concept is a key thing to
understand transactions' work in Firebird.
20How record versions appear
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx10 commit
Insert into
T1(i1) values
(100);
21How record versions appear
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx10 commit
Insert into
T1(i1) values
(100);
Tx50
commit
SELECT i1
FROM T1
i1
100
22How record versions appear
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx10 commit
Insert into
T1(i1) values
(100);
Tx50
commit
SELECT i1
FROM T1
i1
100
Tx60
commit
UPDATE T1
SET i1=200
new version!
23How record versions appear
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx10 commit
Insert into
T1(i1) values
(100);
Tx50
commit
SELECT i1
FROM T1
i1
100
SELECT i1
FROM T1
Tx60
commit
UPDATE T1
SET i1=200
SELECT i1
FROM T1
i1
100
i1
200
24How it works?
25
Each record version has transaction #
N on page Transaction number Datafield1, datafield2
1 50 100
26
TR50
read
N Tx Data
1 10 100
...
27
N Tx Data
1 10 100
...
TR50 TR60write
read
28
N Tx Data
1 10 100
60 200
...
TR50 TR60
read
write
29
TR50 TR60
read
N Tx Data
1 10 100
60 200
...
read
write
30
Some intermediate conclusions
1. No “locks” is placed on the record
2. There can be a lot of committed versions for one record
3. Versions may be needed or not. If not, they can be
considered as “garbage”.
4. Only one non-committed version can exist for the record
(2 active transactions can’t update the same record)
31
How server knows about transactions states?
Is transaction Active or not?
• TIP – Transaction Inventory Pages
• Linear list of transaction states, from 1 to last
transaction number
• Stored in the database
• Limitation — 2 billions of transactions
32
Transaction states
• Each transaction is represented in
Transactions Inventory by it’s state
• 00 – Active
• 01 – Committed
• 10 – Rolled back
• 11 – Limbo (distributed 2-phase
transactions)
TIP contents
Tx № Tx state
…
10 committed
11 committed
12 committed
13 rolled back
14 committed
15 committed
16 committed
17 rolled back
18 active
19 committed
20 active
33
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx10 commit
Insert into
T1(i1) values
(100);
Tx50
commit
SELECT i1
FROM T1
i1
100
SELECT i1
FROM T1
Tx60
commit
UPDATE T1
SET i1=200
SELECT i1
FROM T1
i1
100
i1
200
TIP
Tx State
10 Commited
Tx State
10 Commited
50 Active
60 Active
Tx State
10 Commited
50 Commited
60 Commited
34
Transaction isolation levels
35
Isolation levels in Firebird
READ COMMITED
SNAPSHOT
SNAPSHOT WITH TABLE STABILITY
Isolation levels in FirebirdIsolation levels in Firebird
36Snapshot
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 52
commit
Insert into T1(i1)
values (100);
Tx 51
rollback
Insert into T1(i1)
values (200);
Tx 10
commit
SELECT FROM T1 SELECT FROM T1
snapshot
i1
37Read Commited
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 15
commit
Insert into T1(i1)
values (100);
Tx 10
commit
SELECT i1
FROM T1
SELECT i1
FROM T1
read commited
i1
100
i1
38
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10
Read Committed transactions “see” global TIP.
That’s why they can read committed changes of other transactions
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10
Snapshot copies TIP on it’s start. It does not see any changes made by
other committed transactions after snapshot start
Read Commited and Snapshot
39TIP for Read Commited
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 15
commit
Insert into T1(i1)
values (100);
Tx 10
commit
SELECT i1
FROM T1
SELECT i1
FROM T1
read commited
i1
100
i1
Tx State
10 Active
Tx State
10 Active
15 Active
Tx State
10 Active
15 Commited
40
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
Tx 52
commit
Insert into T1(i1)
values (100);
Tx 51
rollback
Insert into T1(i1)
values (200);
Tx 10
commit
SELECT FROM T1 SELECT FROM T1
snapshot
i1
Tx State
10 Active
Tx State
10 Active
51 Active
52 Active
Tx State
10 Active
51 Rollback
52 Commited
Tx State
10 Active
TIP for snapshot
41
Each transaction can see:
• Own created records and versions
• Insert, Update, Delete
• If it is Read Committed, it can see every changes that
was made by committed transactions, because it looks
into global TIP
• If it is Snapshot, it can see own changes and record
versions commited to the moment of its start, because it
looks into it’s own copy of TIP
42
Record versions visibility
43
How we will present about records
Each record can have versions, created by
different transactions
Record 10 Tx 10 100 Tx 20 200 Tx 30 555
44
Record 10 Tx 10 100 Tx 20 200 Tx 30 555
R10 Tx 10 Tx 20 Tx 30
Compact representation
How we will present about records
45
3 rules of record visibilty
1) For each snapshot transaction engine maintains
stable view of database
2) Transaction can not see record versions created
by another active transaction
3) Transaction should walk backversions chain
looking for commited backversion
46Ex: record versions visibility for Tx20
47
• In order to figure out which record version is
visible, every transaction must read TIP
• TIP can contain up to 2 Billion transactions
• So each transaction should read up to 2 billions
of transactions! - Damn, that's why Firebird is
slow! (it's a joke)
48TIP (example)
We need a way to separate old, not interesting
transactions from currently active part of TIP
●
For this purpose engine maintains Oldest
Interesting Transaction marker, or OIT
49TIP (example)
50
51
firebird>gstat -h A.FDB
Database header page information:
Flags 0
Generation 6
System Change Number 0
Page size 4096
ODS version 12.0
Oldest transaction 1
Oldest active 2
Oldest snapshot 2
Next transaction 3
Sequence number 0
Next attachment ID 3
Transaction markers
52
4 markers
• Transaction markers are key characterstics of
TIP and transaction mechanism
– Let's see what they mean and how they evaluated:
• NEXT — next transaction
• OAT — Oldest Active
• OST — Oldest Snapshot
• OIT — Oldest Interesting
53
NEXT
• NEXT is the simplest — it's the most recent
transaction
• NEXT number is written on header page
54
OAT is the first transaction in TIP which state is
“active”
Evaluation:
● Scan TIP starting from current OAT value looking
for “active” transaction
● Save found value in transaction's lock data
● Save found value as new OAT marker
OAT is really an oldest active transaction
OAT - Oldest Active Transaction
55OAT evaluation example
56
Problems indicated by OAT
●
Where to look?
●
NEXT — OAT > (number of connections * number of
transaction)
●
What it means?
●
Long running transaction which makes Firebird to
think that record versions are still needed
57
58
59
60
OST and Read Commited transactions
61
62
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
UPDATE T1
UPDATE T1
UPDATE T1
UPDATE T1
UPDATE T1
N Tx Data
1 4 ccc
2 1 aaa
3 2 bbb
4 3 bbbb
5
6
7
...
Select * from
rdb$databasewrite
The longer transaction lasts, the higher chance to create potentially
useless (potential garbage) versions
63
Where to look
(OST-OIT) > sweep interval
What it means
– Autosweep does not work (if sweep interval >0)
– Some records need garbage collection
Problems indicated by OST
64
• Direct
• Loss of performance due to more record versions: i.e., queries
become slower
• More indexed reads
• More data page reads
• 1.5mln versions ~30mb per record
• Indirect
• After transaction’s end its versions become garbage, and garbage
collection mechanism tries to gather it
• Due to long transaction OST stuck, so autosweep (if it is not
disabled) tries to start at unpredictable moment (and ends without
success)
• GC and sweep can consume a lot of resources
• Unpredictable moment can occur at high load time
Problems caused by long running
transactions
65Oldest Interesting Transaction
66TIP size
• TIP to be copied is NEXT - OIT
• Size of active part of the TIP in bytes is (Next – OIT) / 4
67Problems indicated by OIT
Where to look
OIT- OST
Problem
Big size of TIP — Global, and, specifically copies
of TIP for snapshots
68Ideal transactions flow
t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
TxNN
TxNN
TxNN
TxNN
TxNN
TxNN
TxNN
TxNN Short transactions does
not stuck OIT or OAT or
OST, and avoid problems
related with it.
Oldest transaction X-1
Oldest active X
Oldest snapshot X
Next transaction X+1
69
Summary
• Make write (for INSERT/UPDATE/DELETE)
transactions as short as possible
• Use Read Commited Read-Only transactions for
SELECTs
70
Thank you!
• Questions? support@ib-aid.com

Contenu connexe

Tendances

MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
Introduction To Liquibase
Introduction To Liquibase Introduction To Liquibase
Introduction To Liquibase Knoldus Inc.
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseAidas Dragūnas
 
Redis overview for Software Architecture Forum
Redis overview for Software Architecture ForumRedis overview for Software Architecture Forum
Redis overview for Software Architecture ForumChristopher Spring
 
M|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsM|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsMariaDB plc
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOpsSveta Smirnova
 
Fusion P8 for FileNet Overview
Fusion P8 for FileNet OverviewFusion P8 for FileNet Overview
Fusion P8 for FileNet OverviewMarc-Henri Cerar
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotFlink Forward
 
Redis Introduction
Redis IntroductionRedis Introduction
Redis IntroductionAlex Su
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLMorgan Tocker
 
Zabbix e SNMP - Zabbix Conference LatAm - André Déo
Zabbix e SNMP - Zabbix Conference LatAm - André DéoZabbix e SNMP - Zabbix Conference LatAm - André Déo
Zabbix e SNMP - Zabbix Conference LatAm - André DéoAndré Déo
 
An Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAn Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAli MasudianPour
 
MMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorMMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorSimon J Mudd
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesYoshinori Matsunobu
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Jose Augusto Carvalho
 

Tendances (20)

MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
Introduction To Liquibase
Introduction To Liquibase Introduction To Liquibase
Introduction To Liquibase
 
Continuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With LiquibaseContinuous DB Changes Delivery With Liquibase
Continuous DB Changes Delivery With Liquibase
 
Redis introduction
Redis introductionRedis introduction
Redis introduction
 
Redis overview for Software Architecture Forum
Redis overview for Software Architecture ForumRedis overview for Software Architecture Forum
Redis overview for Software Architecture Forum
 
LiquiBase
LiquiBaseLiquiBase
LiquiBase
 
M|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write PathsM|18 Deep Dive: InnoDB Transactions and Write Paths
M|18 Deep Dive: InnoDB Transactions and Write Paths
 
MySQL Performance for DevOps
MySQL Performance for DevOpsMySQL Performance for DevOps
MySQL Performance for DevOps
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Fusion P8 for FileNet Overview
Fusion P8 for FileNet OverviewFusion P8 for FileNet Overview
Fusion P8 for FileNet Overview
 
Liquibase
LiquibaseLiquibase
Liquibase
 
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and PinotExactly-Once Financial Data Processing at Scale with Flink and Pinot
Exactly-Once Financial Data Processing at Scale with Flink and Pinot
 
Redis Introduction
Redis IntroductionRedis Introduction
Redis Introduction
 
The InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQLThe InnoDB Storage Engine for MySQL
The InnoDB Storage Engine for MySQL
 
Zabbix e SNMP - Zabbix Conference LatAm - André Déo
Zabbix e SNMP - Zabbix Conference LatAm - André DéoZabbix e SNMP - Zabbix Conference LatAm - André Déo
Zabbix e SNMP - Zabbix Conference LatAm - André Déo
 
An Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL databaseAn Introduction to REDIS NoSQL database
An Introduction to REDIS NoSQL database
 
MMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and OrchestratorMMUG18 - MySQL Failover and Orchestrator
MMUG18 - MySQL Failover and Orchestrator
 
RocksDB Performance and Reliability Practices
RocksDB Performance and Reliability PracticesRocksDB Performance and Reliability Practices
RocksDB Performance and Reliability Practices
 
Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2Monitoração avançada com Zabbix 2
Monitoração avançada com Zabbix 2
 
HTAP Queries
HTAP QueriesHTAP Queries
HTAP Queries
 

En vedette

Resolving Firebird performance problems
Resolving Firebird performance problemsResolving Firebird performance problems
Resolving Firebird performance problemsAlexey Kovyazin
 
High-load performance testing: Firebird 2.5, 3.0, 4.0
High-load performance testing:  Firebird 2.5, 3.0, 4.0High-load performance testing:  Firebird 2.5, 3.0, 4.0
High-load performance testing: Firebird 2.5, 3.0, 4.0Alexey Kovyazin
 
New SQL Features in Firebird 3, by Vlad Khorsun
New SQL Features in Firebird 3, by Vlad KhorsunNew SQL Features in Firebird 3, by Vlad Khorsun
New SQL Features in Firebird 3, by Vlad KhorsunMind The Firebird
 
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.5Alexey Kovyazin
 
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...Alexey Kovyazin
 
Tips for using Firebird system tables
Tips for using Firebird system tablesTips for using Firebird system tables
Tips for using Firebird system tablesMind The Firebird
 
Stored procedures in Firebird
Stored procedures in FirebirdStored procedures in Firebird
Stored procedures in FirebirdMind The Firebird
 
Firebird.performance.testing
Firebird.performance.testingFirebird.performance.testing
Firebird.performance.testingMind The Firebird
 
Superchaging big production systems on Firebird: transactions, garbage, maint...
Superchaging big production systems on Firebird: transactions, garbage, maint...Superchaging big production systems on Firebird: transactions, garbage, maint...
Superchaging big production systems on Firebird: transactions, garbage, maint...Mind The Firebird
 
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 IBSurgeonAlexey Kovyazin
 
Working with Large Firebird databases
Working with Large Firebird databasesWorking with Large Firebird databases
Working with Large Firebird databasesMind The Firebird
 
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 moreAlexey Kovyazin
 
Firebird, datos generales
Firebird, datos generalesFirebird, datos generales
Firebird, datos generalesalbringas
 

En vedette (14)

Resolving Firebird performance problems
Resolving Firebird performance problemsResolving Firebird performance problems
Resolving Firebird performance problems
 
High-load performance testing: Firebird 2.5, 3.0, 4.0
High-load performance testing:  Firebird 2.5, 3.0, 4.0High-load performance testing:  Firebird 2.5, 3.0, 4.0
High-load performance testing: Firebird 2.5, 3.0, 4.0
 
New SQL Features in Firebird 3, by Vlad Khorsun
New SQL Features in Firebird 3, by Vlad KhorsunNew SQL Features in Firebird 3, by Vlad Khorsun
New SQL Features in Firebird 3, by Vlad Khorsun
 
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
 
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...
 
Tips for using Firebird system tables
Tips for using Firebird system tablesTips for using Firebird system tables
Tips for using Firebird system tables
 
Stored procedures in Firebird
Stored procedures in FirebirdStored procedures in Firebird
Stored procedures in Firebird
 
Firebird.performance.testing
Firebird.performance.testingFirebird.performance.testing
Firebird.performance.testing
 
Superchaging big production systems on Firebird: transactions, garbage, maint...
Superchaging big production systems on Firebird: transactions, garbage, maint...Superchaging big production systems on Firebird: transactions, garbage, maint...
Superchaging big production systems on Firebird: transactions, garbage, maint...
 
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
 
Working with Large Firebird databases
Working with Large Firebird databasesWorking with Large Firebird databases
Working with Large Firebird databases
 
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
 
SuperServer in Firebird 3
SuperServer in Firebird 3SuperServer in Firebird 3
SuperServer in Firebird 3
 
Firebird, datos generales
Firebird, datos generalesFirebird, datos generales
Firebird, datos generales
 

Similaire à How Firebird transactions work

How Firebird transactions work
How Firebird transactions workHow Firebird transactions work
How Firebird transactions workMind The Firebird
 
Transaction Ordering System
Transaction Ordering SystemTransaction Ordering System
Transaction Ordering SystemJasonGilchrist3
 
NaPoleonX : introducing the world first blockchained index publisher
NaPoleonX : introducing the world first blockchained index publisherNaPoleonX : introducing the world first blockchained index publisher
NaPoleonX : introducing the world first blockchained index publisherNaPoleonX
 
Omid: scalable and highly available transaction processing for Apache Phoenix
Omid: scalable and highly available transaction processing for Apache PhoenixOmid: scalable and highly available transaction processing for Apache Phoenix
Omid: scalable and highly available transaction processing for Apache PhoenixDataWorks Summit
 
Admission in india 2015
Admission in india 2015Admission in india 2015
Admission in india 2015Edhole.com
 
Efficient Scheduler for Electronic Funds Tranfer (EFT) Scenarios
Efficient Scheduler for Electronic Funds Tranfer (EFT) ScenariosEfficient Scheduler for Electronic Funds Tranfer (EFT) Scenarios
Efficient Scheduler for Electronic Funds Tranfer (EFT) Scenariosrrrighi
 
Admission in india 2015
Admission in india 2015Admission in india 2015
Admission in india 2015Edhole.com
 
Multi version Concurrency Control and its applications in Advanced database s...
Multi version Concurrency Control and its applications in Advanced database s...Multi version Concurrency Control and its applications in Advanced database s...
Multi version Concurrency Control and its applications in Advanced database s...GauthamSK4
 
Layman's Guide to ISO8583
Layman's  Guide to ISO8583Layman's  Guide to ISO8583
Layman's Guide to ISO8583Donald Yeo
 
Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...
Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...
Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...Hsien-Hsin Sean Lee, Ph.D.
 
Indexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphIndexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphStefan Adolf
 
OCBC_MX-3.1Pre-Post-Trade-Walk-Through.ppt
OCBC_MX-3.1Pre-Post-Trade-Walk-Through.pptOCBC_MX-3.1Pre-Post-Trade-Walk-Through.ppt
OCBC_MX-3.1Pre-Post-Trade-Walk-Through.pptFaisal Sal
 
database1.pptx
database1.pptxdatabase1.pptx
database1.pptxOmarKamil1
 
8051 training an interactive tutorial
8051 training an interactive tutorial8051 training an interactive tutorial
8051 training an interactive tutorialFutura infotech
 
RTL-Design for beginners
RTL-Design  for beginnersRTL-Design  for beginners
RTL-Design for beginnersDr.YNM
 

Similaire à How Firebird transactions work (20)

How Firebird transactions work
How Firebird transactions workHow Firebird transactions work
How Firebird transactions work
 
Transaction Ordering System
Transaction Ordering SystemTransaction Ordering System
Transaction Ordering System
 
basil.pptx
basil.pptxbasil.pptx
basil.pptx
 
NaPoleonX : introducing the world first blockchained index publisher
NaPoleonX : introducing the world first blockchained index publisherNaPoleonX : introducing the world first blockchained index publisher
NaPoleonX : introducing the world first blockchained index publisher
 
Omid: scalable and highly available transaction processing for Apache Phoenix
Omid: scalable and highly available transaction processing for Apache PhoenixOmid: scalable and highly available transaction processing for Apache Phoenix
Omid: scalable and highly available transaction processing for Apache Phoenix
 
Admission in india 2015
Admission in india 2015Admission in india 2015
Admission in india 2015
 
Unit 5 dbms
Unit 5 dbmsUnit 5 dbms
Unit 5 dbms
 
Efficient Scheduler for Electronic Funds Tranfer (EFT) Scenarios
Efficient Scheduler for Electronic Funds Tranfer (EFT) ScenariosEfficient Scheduler for Electronic Funds Tranfer (EFT) Scenarios
Efficient Scheduler for Electronic Funds Tranfer (EFT) Scenarios
 
Admission in india 2015
Admission in india 2015Admission in india 2015
Admission in india 2015
 
Unit 06 dbms
Unit 06 dbmsUnit 06 dbms
Unit 06 dbms
 
Multi version Concurrency Control and its applications in Advanced database s...
Multi version Concurrency Control and its applications in Advanced database s...Multi version Concurrency Control and its applications in Advanced database s...
Multi version Concurrency Control and its applications in Advanced database s...
 
Layman's Guide to ISO8583
Layman's  Guide to ISO8583Layman's  Guide to ISO8583
Layman's Guide to ISO8583
 
Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...
Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...
Lec15 Intro to Computer Engineering by Hsien-Hsin Sean Lee Georgia Tech -- Re...
 
Indexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The GraphIndexing Decentralized Data with Ethereum, IPFS & The Graph
Indexing Decentralized Data with Ethereum, IPFS & The Graph
 
OCBC_MX-3.1Pre-Post-Trade-Walk-Through.ppt
OCBC_MX-3.1Pre-Post-Trade-Walk-Through.pptOCBC_MX-3.1Pre-Post-Trade-Walk-Through.ppt
OCBC_MX-3.1Pre-Post-Trade-Walk-Through.ppt
 
database1.pptx
database1.pptxdatabase1.pptx
database1.pptx
 
Assignment#14
Assignment#14Assignment#14
Assignment#14
 
8051 training an interactive tutorial
8051 training an interactive tutorial8051 training an interactive tutorial
8051 training an interactive tutorial
 
RTL-Design for beginners
RTL-Design  for beginnersRTL-Design  for beginners
RTL-Design for beginners
 
Google Spanner
Google SpannerGoogle Spanner
Google Spanner
 

Plus de Alexey Kovyazin

Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Alexey Kovyazin
 
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 IBSurgeonAlexey Kovyazin
 
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.5Alexey Kovyazin
 
Firebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachFirebird Anti-Corruption Approach
Firebird Anti-Corruption ApproachAlexey Kovyazin
 
Firebird Dataguard (Russian)
Firebird Dataguard (Russian)Firebird Dataguard (Russian)
Firebird Dataguard (Russian)Alexey Kovyazin
 
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...
Решения на базе СУБД Firebird в крупных компаниях и государственных учреждени...Alexey Kovyazin
 
Firebird DataGuard - Еще раз об уверенности в завтрашнем дне
Firebird DataGuard -  Еще раз об уверенности в завтрашнем днеFirebird DataGuard -  Еще раз об уверенности в завтрашнем дне
Firebird DataGuard - Еще раз об уверенности в завтрашнем днеAlexey Kovyazin
 
Firebird usage promo draft
Firebird usage promo draftFirebird usage promo draft
Firebird usage promo draftAlexey Kovyazin
 
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)Alexey Kovyazin
 
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)Alexey Kovyazin
 
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)Alexey Kovyazin
 
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)
СУБД Firebird: Краткий обзор, Дмитрий Еманов (in Russian)Alexey Kovyazin
 
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)Alexey Kovyazin
 
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)Alexey Kovyazin
 
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)Alexey Kovyazin
 
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...
Firebird: Универсальная СУБД. Краткая презентация на Интероп 2008, Дмитрий Ем...Alexey Kovyazin
 
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...Alexey Kovyazin
 
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...Alexey Kovyazin
 
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)Alexey Kovyazin
 
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)Alexey Kovyazin
 

Plus de Alexey Kovyazin (20)

Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0Новые возможности языка SQL в Firebird 3.0
Новые возможности языка SQL в Firebird 3.0
 
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 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
 
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)
 
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: 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, Дмитрий Ем...
 
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
Firebird Roadmap-2006 Текущее состояние разработки и перспективы развития (in...
 
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
Firebird в 2008: новые возможности и планы по дальнейшему развитию, by Дмитри...
 
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
Firebird в 2008 году: эволюция или революция? (in Russian, by Dmitry Kuzmenko)
 
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
Новые возможности Firebird 2.1 (in Russian, Vlad Khorsun)
 

Dernier

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

How Firebird transactions work

  • 1. How Firebird transactions work Alexey Kovyazin www.IBSurgeon.com
  • 2. 2 • Tools and consulting • Platinum Sponsor of Firebird Foundation • Founded in 2002: 12 years of Firebird and InterBase recoveries and consulting • Based in Moscow, Russia
  • 3. 3Agenda What is transaction? Why we need it? How we will present about transactions Records and versions Transactions and record versions Transaction Inventory Record visibility in transactions Transaction Markers and their evaluation Some conclusions
  • 4. 4What is transaction? • Transaction as a general concept of any dynamic system • “Classic” example • begin • -- move money from account1 to account2 • Decrease account1 • Increase account2 • end – commit/rollback • Transaction Managers
  • 5. 5Database transaction definition • a unit of work performed against a database, and treated in a coherent and reliable way independent of other transactions. • A database transaction, by definition, must be atomic, consistent, isolated and durable
  • 6. 6 In ideal world only serial operations Insert into T1(i1) values (100); SELECT i1 FROM T1 Insert into T1(i1) values (200);
  • 7. 7
  • 8. 8
  • 9. 9In real world t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx11 INSERT T1 Tx14 commit UPDATE T1 nowait commit Tx20 UPDATE T1 rollback UPDATE T1
  • 10. 10The ultimate purpose of transaction: • Concurrent execution of operations should lead to the exactly the same result as sequental execution of operations. For each [snapshot] transaction Firebird engine should maintain a stable view of the database. In simple words: each transaction should run as the only transaction.
  • 11. 11
  • 12. 12 How Firebird does implement stable view for each transactions?
  • 13. 13How we will present about transactions t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 11 Transaction’s number Start End
  • 14. 14How we will present about transactions t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 11 commit Tx 12 rollback Transaction’s result Transaction’s result
  • 15. 15How we will present about transactions Tx 11 commit snapshot Transaction’s parameters t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12
  • 16. 16How we will present about transactions t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 11 commit Insert into T1(i1) values (100); snapshot Operation in the frames of transaction
  • 17. 17How we will present about transactions t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 11 commit Insert into T1(i1) values (100); SELECT i1 FROM T1 snapshot i1 100 Result of operation
  • 18. 18 Now let's start... Basics your [probably] know: - Everything in the database is done within transaction - Each transaction gets own incremental number 1, 2, 3, … etc - Firebird is a multi-version engine (each record in Firebird can have versions)
  • 19. 19 Record version concept is a key thing to understand transactions' work in Firebird.
  • 20. 20How record versions appear t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx10 commit Insert into T1(i1) values (100);
  • 21. 21How record versions appear t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx10 commit Insert into T1(i1) values (100); Tx50 commit SELECT i1 FROM T1 i1 100
  • 22. 22How record versions appear t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx10 commit Insert into T1(i1) values (100); Tx50 commit SELECT i1 FROM T1 i1 100 Tx60 commit UPDATE T1 SET i1=200 new version!
  • 23. 23How record versions appear t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx10 commit Insert into T1(i1) values (100); Tx50 commit SELECT i1 FROM T1 i1 100 SELECT i1 FROM T1 Tx60 commit UPDATE T1 SET i1=200 SELECT i1 FROM T1 i1 100 i1 200
  • 25. 25 Each record version has transaction # N on page Transaction number Datafield1, datafield2 1 50 100
  • 27. 27 N Tx Data 1 10 100 ... TR50 TR60write read
  • 28. 28 N Tx Data 1 10 100 60 200 ... TR50 TR60 read write
  • 29. 29 TR50 TR60 read N Tx Data 1 10 100 60 200 ... read write
  • 30. 30 Some intermediate conclusions 1. No “locks” is placed on the record 2. There can be a lot of committed versions for one record 3. Versions may be needed or not. If not, they can be considered as “garbage”. 4. Only one non-committed version can exist for the record (2 active transactions can’t update the same record)
  • 31. 31 How server knows about transactions states? Is transaction Active or not? • TIP – Transaction Inventory Pages • Linear list of transaction states, from 1 to last transaction number • Stored in the database • Limitation — 2 billions of transactions
  • 32. 32 Transaction states • Each transaction is represented in Transactions Inventory by it’s state • 00 – Active • 01 – Committed • 10 – Rolled back • 11 – Limbo (distributed 2-phase transactions) TIP contents Tx № Tx state … 10 committed 11 committed 12 committed 13 rolled back 14 committed 15 committed 16 committed 17 rolled back 18 active 19 committed 20 active
  • 33. 33 t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx10 commit Insert into T1(i1) values (100); Tx50 commit SELECT i1 FROM T1 i1 100 SELECT i1 FROM T1 Tx60 commit UPDATE T1 SET i1=200 SELECT i1 FROM T1 i1 100 i1 200 TIP Tx State 10 Commited Tx State 10 Commited 50 Active 60 Active Tx State 10 Commited 50 Commited 60 Commited
  • 35. 35 Isolation levels in Firebird READ COMMITED SNAPSHOT SNAPSHOT WITH TABLE STABILITY Isolation levels in FirebirdIsolation levels in Firebird
  • 36. 36Snapshot t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 52 commit Insert into T1(i1) values (100); Tx 51 rollback Insert into T1(i1) values (200); Tx 10 commit SELECT FROM T1 SELECT FROM T1 snapshot i1
  • 37. 37Read Commited t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 15 commit Insert into T1(i1) values (100); Tx 10 commit SELECT i1 FROM T1 SELECT i1 FROM T1 read commited i1 100 i1
  • 38. 38 t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 Read Committed transactions “see” global TIP. That’s why they can read committed changes of other transactions t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 Snapshot copies TIP on it’s start. It does not see any changes made by other committed transactions after snapshot start Read Commited and Snapshot
  • 39. 39TIP for Read Commited t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 15 commit Insert into T1(i1) values (100); Tx 10 commit SELECT i1 FROM T1 SELECT i1 FROM T1 read commited i1 100 i1 Tx State 10 Active Tx State 10 Active 15 Active Tx State 10 Active 15 Commited
  • 40. 40 t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 Tx 52 commit Insert into T1(i1) values (100); Tx 51 rollback Insert into T1(i1) values (200); Tx 10 commit SELECT FROM T1 SELECT FROM T1 snapshot i1 Tx State 10 Active Tx State 10 Active 51 Active 52 Active Tx State 10 Active 51 Rollback 52 Commited Tx State 10 Active TIP for snapshot
  • 41. 41 Each transaction can see: • Own created records and versions • Insert, Update, Delete • If it is Read Committed, it can see every changes that was made by committed transactions, because it looks into global TIP • If it is Snapshot, it can see own changes and record versions commited to the moment of its start, because it looks into it’s own copy of TIP
  • 43. 43 How we will present about records Each record can have versions, created by different transactions Record 10 Tx 10 100 Tx 20 200 Tx 30 555
  • 44. 44 Record 10 Tx 10 100 Tx 20 200 Tx 30 555 R10 Tx 10 Tx 20 Tx 30 Compact representation How we will present about records
  • 45. 45 3 rules of record visibilty 1) For each snapshot transaction engine maintains stable view of database 2) Transaction can not see record versions created by another active transaction 3) Transaction should walk backversions chain looking for commited backversion
  • 46. 46Ex: record versions visibility for Tx20
  • 47. 47 • In order to figure out which record version is visible, every transaction must read TIP • TIP can contain up to 2 Billion transactions • So each transaction should read up to 2 billions of transactions! - Damn, that's why Firebird is slow! (it's a joke)
  • 48. 48TIP (example) We need a way to separate old, not interesting transactions from currently active part of TIP ● For this purpose engine maintains Oldest Interesting Transaction marker, or OIT
  • 50. 50
  • 51. 51 firebird>gstat -h A.FDB Database header page information: Flags 0 Generation 6 System Change Number 0 Page size 4096 ODS version 12.0 Oldest transaction 1 Oldest active 2 Oldest snapshot 2 Next transaction 3 Sequence number 0 Next attachment ID 3 Transaction markers
  • 52. 52 4 markers • Transaction markers are key characterstics of TIP and transaction mechanism – Let's see what they mean and how they evaluated: • NEXT — next transaction • OAT — Oldest Active • OST — Oldest Snapshot • OIT — Oldest Interesting
  • 53. 53 NEXT • NEXT is the simplest — it's the most recent transaction • NEXT number is written on header page
  • 54. 54 OAT is the first transaction in TIP which state is “active” Evaluation: ● Scan TIP starting from current OAT value looking for “active” transaction ● Save found value in transaction's lock data ● Save found value as new OAT marker OAT is really an oldest active transaction OAT - Oldest Active Transaction
  • 56. 56 Problems indicated by OAT ● Where to look? ● NEXT — OAT > (number of connections * number of transaction) ● What it means? ● Long running transaction which makes Firebird to think that record versions are still needed
  • 57. 57
  • 58. 58
  • 59. 59
  • 60. 60 OST and Read Commited transactions
  • 61. 61
  • 62. 62 t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 UPDATE T1 UPDATE T1 UPDATE T1 UPDATE T1 UPDATE T1 N Tx Data 1 4 ccc 2 1 aaa 3 2 bbb 4 3 bbbb 5 6 7 ... Select * from rdb$databasewrite The longer transaction lasts, the higher chance to create potentially useless (potential garbage) versions
  • 63. 63 Where to look (OST-OIT) > sweep interval What it means – Autosweep does not work (if sweep interval >0) – Some records need garbage collection Problems indicated by OST
  • 64. 64 • Direct • Loss of performance due to more record versions: i.e., queries become slower • More indexed reads • More data page reads • 1.5mln versions ~30mb per record • Indirect • After transaction’s end its versions become garbage, and garbage collection mechanism tries to gather it • Due to long transaction OST stuck, so autosweep (if it is not disabled) tries to start at unpredictable moment (and ends without success) • GC and sweep can consume a lot of resources • Unpredictable moment can occur at high load time Problems caused by long running transactions
  • 66. 66TIP size • TIP to be copied is NEXT - OIT • Size of active part of the TIP in bytes is (Next – OIT) / 4
  • 67. 67Problems indicated by OIT Where to look OIT- OST Problem Big size of TIP — Global, and, specifically copies of TIP for snapshots
  • 68. 68Ideal transactions flow t0 t1 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 TxNN TxNN TxNN TxNN TxNN TxNN TxNN TxNN Short transactions does not stuck OIT or OAT or OST, and avoid problems related with it. Oldest transaction X-1 Oldest active X Oldest snapshot X Next transaction X+1
  • 69. 69 Summary • Make write (for INSERT/UPDATE/DELETE) transactions as short as possible • Use Read Commited Read-Only transactions for SELECTs
  • 70. 70 Thank you! • Questions? support@ib-aid.com