1. What is Falcon?

Falcon is a transactional data storage engine that runs on all popular hardware/architecture platforms. Its design takes advantage of the large memory caches available in 64-bit environments. Falcon will be the transaction management engine of choice in MySQL for businesses that need fast transaction performance and rock-solid data reliability.

2. How did the Falcon project begin?

Falcon came from MySQL’s February 2006 acquisition of Netfrastructure, a company owned by Jim Starkey and Ann Harrison, who now work for MySQL on the Falcon effort. The Falcon group adapted the Netfrastructure data repository into a MySQL pluggable storage engine.

3. Is Falcon a replacement for InnoDB?

Falcon was not designed to be a plug-in replacement for InnoDB. New applications that would have been implemented with InnoDB can use Falcon easily. Many applications that currently use InnoDB should be able to also use Falcon. Reasons for not switching to Falcon from InnoDB would be the absolute reliance on clustered indexes, different locking needs, and the need to use statement-based replication in Falcon.

4. Does Falcon support ACID transactions?

Yes, Falcon is ACID compliant. Falcon manages transactions through a multi-generational approach in which only committed data is stored in the database. Uncommitted data and old versions of data normally exist only in the record cache. Record versions created by large insert and update transactions may be offloaded into the serial log. One exception is that Falcon creates blobs larger than a page directly on database pages, bypassing the log to avoid writing large objects twice.

5. Does Falcon handle crash recovery?

Yes, Falcon handles crash recovery through the use of its serial log files.

6. How does Falcon use its log files?

Falcon log files contain entries for committed data to be copied into the database, and entries that allow it to redo actions during recovery, and entries that allow it to undo partial changes made by failed transactions. The serial log is a combination do, redo, and undo log, with some entries being used in more than one phase. Falcon alternates between two log files, switching when all entries in the older file have been moved into the database file.

7. Does Falcon support all standard MySQL datatypes?


8. How does locking work in Falcon?

Falcon uses MVCC (multi-version concurrency control) to provide record level concurrency. This means that readers don’t block writers and vice-versa.

9. What types of indexes does Falcon support?

Falcon uses a form of B-tree indexing with a two-stage retrieval. The entries in the B-tree are prefix-compressed and have trailing blanks and zeros truncated. Two-stage retrieval provides some of the benefits of clustered indexes without the drawbacks that come from the use of such structures. Traditional database index implementations traverse indexes by bouncing between index pages and database pages, which can oftentimes lead to inefficient or costly disk access. Clustered indexes (or index-organized tables) are structured so that the physical ordering of records corresponds to the index order, with the actual leaf pages being the data pages. While some applications benefit from this organization, the physical implementation of clustered indexes can lead to space management problems, such as page splitting. Furthermore, a table can be clustered on only one index, reducing the efficiency of secondary indexes. In Falcon, the index is scanned first, with bits being set in a sparse bit vector to indicate selected records. Records and data pages are then processed in bit order, which is also physical order on disk.

Falcon’s indexing scheme results in a number of benefits. First, all indexes behave almost like well-tuned clustered indexes. Second, index pages are locked, read, and released, with no intervening data accesses that can cause locking conflicts.

10. Does Falcon have Foreign Keys/Server-enforced Referential Integrity?

Foreign key support in Falcon will be supplied above the storage engine layer, which means that other engines besides Falcon will be able to use server-enforced referential integrity. The Foreign Key work is being done outside of the Falcon project and is not available in MySQL 6.0.

11. What is the performance of Falcon like?

Falcon excels in processing short to medium-sized transactions on multi-CPU hardware, and is therefore ideal for most online database applications.

12. Does Falcon work with normal MySQL replication?

Falcon only works with row-based replication.

13. What limits does Falcon currently have?

Current limits include:

  • A single database limit is 110TB.
  • Each table is limited to 32,000 columns.
  • Each table is limited to 4 billion rows (will be removed in GA).

14. What platforms are supported in the Falcon Alpha?

Linux, Windows, and Mac Intel. Others will soon follow.

15. What V1 GA features are missing in the Falcon Alpha?

  • Two-phase commit
  • Configurable lock timeout
  • Additional platform support

16. When will Falcon be GA?

The plan is to have a GA release of Falcon in mid-2008, but is dependent on the information gathered from the alpha and beta testing periods.