The Falcon!

Some early notes by Brian Aker on Falcon as discussed at the MySQL Camp.

Falcon is a transactional engine MySQL will be introducing. The first discussions were held about 3 years ago with Ann Harrison and about 1 1/2 years ago, MySQL started taking seriously the possibilities.

Falcon is not an InnoDB replacement. It’s a different way of looking at the problem of how it looks at and manages transactions, and how it’s designed. It flips around the way data is stored. Some points:

  • It uses as much memory as possible, like Oracle SGA or InnoDB pool.
  • It has a row cache not a page cache for more optimal memory use.
  • No locking at all. Jim doesn’t believe in it for concurrency control. It has total versioning.
  • Falcon has to keep all changes in memory, so not great for user transactions that may take longer
  • Characteristics – Well optimised for short fast web transactions, Designed for environments with lots of memory.

In general discussions is was mentioned from the floor the fear that there will be so many storage engine options, and you will need a matrix for what is good for what.

In conclusion, Brian mentioned it will be alpha before the end of year.


  1. says

    I think very few web developers are aware of MVCC and its implications. The few that are aware of transactions usually use them only to get bitten by MVCC in InnoDB when concurrent reads occur. SELECT .. FOR UPDATE is just not on the radar of 99,99% of them :(

    Maybe MySQL should start to educate the masses? As a matter of fact I am planning on submitting a talk on locking strategies in web applications for php|tek. Hope others start pushing this topic some more!

  2. says

    In addition to the above corrections, it indeed does have row-level locking (even though it uses MVCC) which is utilized for DML operations, plus timeout and deadlock detection. Also, it can page transactions to disk if need be.