EPUB
- 1.2Mb
Abstract
This is the MySQL Internals Manual.
For legal information, see the Legal Notice.
For help with using MySQL, please visit either the MySQL Forums or MySQL Mailing Lists, where you can discuss your issues with other MySQL users.
For additional documentation on MySQL products, including translations of the documentation into other languages, and downloadable versions in variety of formats, including HTML and PDF formats, see the MySQL Documentation Library.
Document generated on: 2016-05-27 (revision: 463)
Table of Contents [+/-]
- Preface and Legal Notice
- 1 A Guided Tour Of The MySQL Source Code [+/-]
- 1.1 Getting the Source Tree [+/-]
- 1.2 The Major Directories [+/-]
- 1.3 The Flow
- 1.4 The Open-Source Directories
- 1.5 The Internal and External Storage Engine Directories
- 1.6 The OS-Specific Directories
- 1.7 Odds and Ends
- 1.8 A Chunk of Code in /sql/sql_update.cc
- 1.9 The Skeleton of the Server Code
- 1.10 Recap
- 2 Coding Guidelines [+/-]
- 2.1 General Development Guidelines [+/-]
- 2.1.1 C/C++ Coding Guidelines of MySQL Server
- 2.1.2 How We Maintain the Server Coding Guidelines
- 2.1.3 Indentation and Spacing
- 2.1.4 Naming Conventions
- 2.1.5 Commenting Code
- 2.1.6 Header Files
- 2.1.7 Additional Suggestions
- 2.1.8 Suggested Mode in emacs
- 2.1.9 Basic vim Setup
- 2.1.10 Another vim Setup
- 2.1.11 Example Setup for ctags
- 2.2 C++ Coding Guidelines for the NDB Storage Engine [+/-]
- 2.3 DBUG Tags
- 3 Reusable Classes and Templates [+/-]
- 4 Building MySQL Server with CMake [+/-]
- 4.1 CMake Prerequisites
- 4.2 How to Install CMake
- 4.3 Quick How-to-Build Instructions [+/-]
- 4.4 Detailed How-to-Build Instructions [+/-]
- 4.4.1 Create the Build Directory
- 4.4.2 Configure the Build
- 4.4.3 Listing Configuration Options
- 4.4.4 Changing Configuration Options
- 4.4.5 Building Debug Configurations
- 4.4.6 Building With CMake
- 4.4.7 ./configure Emulation
- 4.4.8 For Developers: How to Write Platform Checks
- 4.4.9 Troubleshooting CMake Code
- 4.4.10 Developer CMake Tips
- 4.4.11 MySQL-Specific CMake Macros
- 4.4.12 Interface to Third-Party Tools
- 4.5 FAQ / Miscellany [+/-]
- 4.6 Autotools to CMake Transition Guide [+/-]
- 5 Plugins [+/-]
- 6 Transaction Handling in the Server [+/-]
- 7 The Optimizer [+/-]
- 8 Tracing the Optimizer [+/-]
- 8.1 Typical Usage
- 8.2 System Variables Controlling the Trace
- 8.3 The INFORMATION_SCHEMA.OPTIMIZER_TRACE Table
- 8.4 Traceable Queries
- 8.5 Automatic Trace Purging
- 8.6 Tuning Trace Purging
- 8.7 Tracing Memory Usage
- 8.8 Privilege Checking
- 8.9 Interaction with the --debug Option
- 8.10 The optimizer_trace System Variable
- 8.11 The end_markers_in_json System Variable
- 8.12 Selecting Optimizer Features to Trace
- 8.13 General Trace Structure
- 8.14 Example
- 8.15 Nicely Displaying a Trace
- 8.16 Preventing Use of Optimizer Trace
- 8.17 Testing
- 8.18 Implementation
- 9 Memory Allocation [+/-]
- 10 Important Algorithms and Structures [+/-]
- 10.1 The Item Class
- 10.2 How MySQL Does Sorting (filesort)
- 10.3 Bulk Insert
- 10.4 How MySQL Does Caching
- 10.5 How MySQL Uses the Join Buffer Cache
- 10.6 How MySQL Handles FLUSH TABLES
- 10.7 Full-Text Search
- 10.8 FLOAT and DOUBLE Data Type Representation
- 10.9 Date and Time Data Type Representation
- 10.10 Threads
- 10.11 Character Sets and Collations
- 10.12 Error Flags and Functions
- 10.13 Functions in the mysys Library
- 10.14 Bitmaps
- 11 File Formats [+/-]
- 12 How MySQL Performs Different Selects [+/-]
- 13 How MySQL Transforms Subqueries [+/-]
- 14 MySQL Client/Server Protocol [+/-]
- 14.1 Overview [+/-]
- 14.2 Connection Phase [+/-]
- 14.3 Authentication Method [+/-]
- 14.4 Compression [+/-]
- 14.5 SSL
- 14.6 Text Protocol [+/-]
- 14.6.1 COM_SLEEP
- 14.6.2 COM_QUIT
- 14.6.3 COM_INIT_DB
- 14.6.4 COM_QUERY
- 14.6.5 COM_FIELD_LIST
- 14.6.6 COM_CREATE_DB
- 14.6.7 COM_DROP_DB
- 14.6.8 COM_REFRESH
- 14.6.9 COM_SHUTDOWN
- 14.6.10 COM_STATISTICS
- 14.6.11 COM_PROCESS_INFO
- 14.6.12 COM_CONNECT
- 14.6.13 COM_PROCESS_KILL
- 14.6.14 COM_DEBUG
- 14.6.15 COM_PING
- 14.6.16 COM_TIME
- 14.6.17 COM_DELAYED_INSERT
- 14.6.18 COM_CHANGE_USER
- 14.6.19 COM_RESET_CONNECTION
- 14.6.20 COM_DAEMON
- 14.7 Prepared Statements [+/-]
- 14.8 Stored Procedures [+/-]
- 14.9 Replication Protocol [+/-]
- 14.10 Row-Based Replication [+/-]
- 14.11 Semi-Synchronous Replication [+/-]
- 14.12 Protocol Examples [+/-]
- 14.13 Source Code Locations [+/-]
- 15 X Protocol [+/-]
- 16 Stored Programs [+/-]
- 17 Prepared Statement and Stored Routine Re-Execution [+/-]
- 18 Writing a Procedure [+/-]
- 19 Replication [+/-]
- 20 The Binary Log [+/-]
- 20.1 Binary Log Overview
- 20.2 High-Level Binary Log Structure and Contents
- 20.3 Source Files Related to the Binary Log [+/-]
- 20.4 Generating Browsable Binary Log Information
- 20.5 Event Classes and Types [+/-]
- 20.6 Event Meanings
- 20.7 Event Structure [+/-]
- 20.8 Binary Log Versions [+/-]
- 20.9 Event Data for Specific Event Types [+/-]
- 20.10 Row-Based Binary Logging
- 20.11 Additional Resources
- 21 MyISAM Storage Engine [+/-]
- 22 InnoDB Storage Engine [+/-]
- 23 Writing a Custom Storage Engine [+/-]
- 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.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.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.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
- 24 Test Synchronization [+/-]
- 25 Injecting Test Faults [+/-]
- 26 How to Create Good Test Cases [+/-]
- 26.1 Formal Stuff [+/-]
- 26.2 Comments Everywhere [+/-]
- 26.3 Some Rules Outside of the Formal Stuff [+/-]
- 26.4 Negative Tests
- 26.5 Tests with Several Variants [+/-]
- 26.6 Miscellaneous Tips [+/-]
- 26.6.1 Stability Checks for Random Timing Problems
- 26.6.2 Stability Checks for Hostname-Related Problems
- 26.6.3 Stability Checks for Unexpected Problems
- 26.6.4 Row Order Within Result Sets
- 26.6.5 Test Case Behavior Should Depend on the Result of a SHOW
- 26.6.6 Does a Test Execution Hang?
- 26.6.7 If Your Test is Complicated, Support Debugging
- 26.6.8 You Need to Know Some Syntax, an Option, Etc., but Hate Reading Manuals
- 26.7 Notes on MTR2
- 26.8 Examples of Suspicious Tests and Scripts [+/-]
- 27 Error Messages [+/-]
- A MySQL Source Code Distribution [+/-]
- A.1 Directory Listing [+/-]
- A.1.1 The BUILD Directory
- A.1.2 The client Directory
- A.1.3 The config Directory
- A.1.4 The cmd-line-utils Directory
- A.1.5 The dbug Directory
- A.1.6 The Docs Directory
- A.1.7 The extra Directory
- A.1.8 The heap Directory
- A.1.9 The include Directory
- A.1.10 The innobase Directory
- A.1.11 The libmysql Directory
- A.1.12 The libmysql_r Directory
- A.1.13 The libmysqld Directory
- A.1.14 The man Directory
- A.1.15 The myisam Directory
- A.1.16 The myisammrg Directory
- A.1.17 The mysql-test Directory
- A.1.18 The mysys Directory
- A.1.19 The ndb Directory
- A.1.20 The netware Directory
- A.1.21 The NEW-RPMS Directory
- A.1.22 The os2 Directory
- A.1.23 The pstack Directory
- A.1.24 The regex Directory
- A.1.25 The SCCS Directory
- A.1.26 The scripts Directory
- A.1.27 The server-tools Directory
- A.1.28 The sql Directory
- A.1.29 The sql-bench Directory
- A.1.30 The sql-common Directory
- A.1.31 The SSL Directory
- A.1.32 The strings Directory
- A.1.33 The support-files Directory
- A.1.34 The tests Directory
- A.1.35 The tools Directory
- A.1.36 The VC++Files Directory
- A.1.37 The vio Directory
- A.1.38 The zlib Directory
- B InnoDB Source Code Distribution
- Index
Download
this Manual
EPUB
- 1.2Mb