Documentation Home
MySQL Internals Manual


MySQL Internals Manual  /  Writing a Custom Storage Engine

Chapter 23 Writing a Custom Storage Engine

Table of Contents

23.1 Additional Resources
23.2 Overview
23.3 Creating Storage Engine Source Files
23.4 Adding Engine Specific Variables and Parameters
23.5 Creating the handlerton
23.6 Handling Handler Instantiation
23.7 Defining Filename Extensions
23.8 Creating Tables
23.9 Opening a Table
23.10 Implementing Basic Table Scanning
23.10.1 Implementing the store_lock() Method
23.10.2 Implementing the external_lock() Method
23.10.3 Implementing the rnd_init() Method
23.10.4 Implementing the info(uinf flag) Method
23.10.5 Implementing the extra() Method
23.10.6 Implementing the rnd_next() Method
23.11 Closing a Table
23.12 Adding Support for INSERT to a Storage Engine
23.13 Adding Support for UPDATE to a Storage Engine
23.14 Adding Support for DELETE to a Storage Engine
23.15 Supporting Non-Sequential Reads
23.15.1 Implementing the position() Method
23.15.2 Implementing the rnd_pos() Method
23.16 Supporting Indexing
23.16.1 Indexing Overview
23.16.2 Getting Index Information During CREATE TABLE Operations
23.16.3 Creating Index Keys
23.16.4 Parsing Key Information
23.16.5 Providing Index Information to the Optimizer
23.16.6 Preparing for Index Use with index_init()
23.16.7 Cleaning up with index_end()
23.16.8 Implementing the index_read() Method
23.16.9 Implementing the index_read_idx() Method
23.16.10 Implementing the index_read_last() Method
23.16.11 Implementing the index_next() Method
23.16.12 Implementing the index_prev() Method
23.16.13 Implementing the index_first() Method
23.16.14 Implementing the index_last() Method
23.17 Supporting Transactions
23.17.1 Transaction Overview
23.17.2 Starting a Transaction
23.17.3 Implementing ROLLBACK
23.17.4 Implementing COMMIT
23.17.5 Adding Support for Savepoints
23.18 API Reference
23.18.1 bas_ext
23.18.2 close
23.18.3 create
23.18.4 delete_row
23.18.5 delete_table
23.18.6 external_lock
23.18.7 extra
23.18.8 index_end
23.18.9 index_first
23.18.10 index_init
23.18.11 index_last
23.18.12 index_next
23.18.13 index_prev
23.18.14 index_read
23.18.15 index_read_idx
23.18.16 index_read_last
23.18.17 info
23.18.18 open
23.18.19 position
23.18.20 records_in_range
23.18.21 rnd_init
23.18.22 rnd_next
23.18.23 rnd_pos
23.18.24 start_stmt
23.18.25 store_lock
23.18.26 update_row
23.18.27 write_row
23.19 FAQ

With MySQL 5.1, MySQL AB has introduced a pluggable storage engine architecture that makes it possible to create new storage engines and add them to a running MySQL server without recompiling the server itself.

This architecture makes it easier to develop new storage engines for MySQL and deploy them.

This chapter is intended as a guide to assist you in developing a storage engine for the new pluggable storage engine architecture.