|
Understanding MySQL Internals
Although MySQL's source code is open in the sense of being
publicly available, it's essentially closed to you if you
don't understand it. In this book, Sasha Pachev -- a former
member of the MySQL Development Team -- provides a
comprehensive tour of MySQL 5 that shows you how to figure
out the inner workings of this powerful
database. You'll go
right to heart of the database to learn how data structures
and convenience functions operate, how to add new storage
engines and configuration options, and much more.
The core of Understanding MySQL Internals begins with an
Architecture Overview that provides a brief introduction of
how the different components of MySQL work together. You
then learn the steps for setting up a working compilable
copy of the code that you can change and test at your
pleasure. Other sections of the book cover:
Core server classes, structures, and API
The communication protocol between the client and the server
Configuration variables, the controls of the server;
includes a tutorial on how to add your own
Thread-based request handling -- understanding threads and
how they are used in MySQL
An overview of MySQL storage engines
The storage engine interface for integrating third-party
storage engines
The table lock manager
The parser and optimizer for improving MySQL's performance
Integrating a transactional storage engine into MySQL
The internals of replication
Understanding MySQL Internals provides unprecedented
opportunities for developers, DBAs, database application
programmers, IT departments, software vendors, and computer
science students to learn about the inner workings of this
enterprise-proven database. With this book, you will soon
reach a new level of comprehension regarding database
development that will enable you to accomplish your goals.
It's your guide to discovering and improving a great
database.
Preface
1. MySQL History and Architecture
MySQL History
MySQL Architecture
2. Nuts and Bolts of Working with the MySQL Source Code
Unix Shell
BitKeeper
Preparing the System to Build MySQL from BitKeeper Tree
Building MySQL from BitKeeper Tree
Building from Source Distribution
Installing MySQL into a System Directory
Source Code Directory Layout
Preparing the System to Run MySQL in a Debugger
Debugger-Guided Source Tour
Basics of Working with gdb
Finding Things in the Source
Interesting Breakpoints and Variables
Making a Source Modification
Coding Guidelines
Keeping Your BitKeeper Repository Up to Date
Submitting a Patch
3. Core Classes, Structures, Variables, and APIs
THD
NET
TABLE
Field
Utility API Calls
Preprocessor Macros
Global Variables
4. Client/Server Communication
Protocol Overview
Packet Format
Relationship Between MySQL Protocol and OS Layer
Authenticating Handshake
Command Packet
Server Responses
5. Configuration Variables
Configuration Variables Tutorial
Interesting Aspects of Specific Configuration Variables
6. Thread-Based Request Handling
Threads Versus Processes
Implementation of Request Handling
Thread Programming Issues
7. The Storage Engine Interface
The handler Class
Adding a Custom Storage Engine to MySQL
8. Concurrent Access and Locking
Table Lock Manager
9. Parser and Optimizer
Parser
Optimizer
10. Storage Engines
Shared Aspects of Architecture
InnoDB
Memory (Heap)
MyISAM Merge
NDB
Archive
Federated
11. Transactions
Overview of Transactional Storage Engine Implementation
Implementing the handler Subclass
Defining the handlerton
Working with the Query Cache
Working with the Replication Binary Log
Avoiding Deadlocks
12. Replication
Overview
Statement-Based Versus Row-Based Replication
Two-Threaded Slave
Multi-Master
SQL Commands to Help Understand Replication
Binary Log Format
Creating a Custom Replication Utility
Index
|