Innodb source code is organized into directories where each directory holds the C source code files for a given module. Within the directory are 1 or more files that are part of the module. The file names have a structure which I will describe below.
The first part of the file name indicates the module name. The module name is followed by a '0' character which is a separator. The second part of the file name represents the sub-module. Most modules have one file where the sub-module is the same name as the module, this file represents the primary file in the module.
For, example the main file for Btree is located in the btr directory and named: btr0btr.c
The first btr indicates the module name, the 0 is a separator and the the second btr is the sub module name which is the same for the primary file.
The file that handles the Btree cursor is also located in the btr directory and named: btr0cur.c
The first btr is the module name, the 0 is a separator, and the cur is the sub module name which stands for cursor in this case.
There is also a include directory which contains all the header files. The header files are also named in a similar way.
For example, the file 'btr0cur.h' is the header file for the Btree cursor module. Note the include files contain both '.h' files and '.ic' files which are included C files.
Now that we understand the naming conventions, I am going to give you a list of all the modules in the Innodb source code base and a description of what they are for. The list below is sorted by lines of code in the module, with the biggest modules coming first.
INNODB MODULES
row
Row Abstraction, 19,768 lines
sub-modules: Updates, Undo, Undo Modify, Undo Insert, Select, Purge, Mysql Interface
The logic for the mysql row formatting and the innodb row formatting is quite lengthy. This module also seems to have a lot of the high-level business logic for Innodb.
trx
Transactions, 13,138 lines
sub-modules: Rollback, Rollback Segment, Undo, Log Records, Purge
As Innodb is a transactional storage engine there is a lot of logic to implement this
btr
Btree data structure, 12,228 lines
sub-modules: Btree Cursor, Btree Persistent Cursor, Btree Adaptive Search
Btree is the index of Innodb and is core functionality
pars
SQL parser, 11,691 lines
sub-modules: Symbol Table, Optimizer, Lexical Analyzer, Grammar
I am pretty sure you can ignore this directory if you are using innodb with mysql, as it is dead code in that case (please do correct me if I am wrong)
dict
Data Dictionary (meta-data), 10,446 lines
sub-modules: Boot, Creation, Load, Memory
Table names, column names, key names, etc. all in this code
handler
Mysql Storage Engine Interface, 8498 lines
This is the primary interface between Mysql and the innodb storage engine and the entry point for all mysql API calls.
log
Database Log, 8379 lines
sub-modules: Recovery
Database logging is core functionality
buf
Buffer Pool, 7784 lines
sub-modules: Buffer Flush Algorithm, Buffer Replacement Algorithm, Buffer Read Abstraction
os
Operating System Interface, 7659 lines
sub-modules: Files, Processes, Threads, Synchronization
This is the fun stuff, all the low level OS specific code
lock
Transaction Lock System, 6224 lines
sub-modules: Lock Queue Iterator
page
Index Page, 5675 lines
sub-modules: Page Cursor
srv
Main Server Driver, 5469 lines
sub-modules: Startup, Query Execution
Look here for configuration option handling coding and other startup issues
sync
Synchronization, 5361 lines
sub-modules: ReadWrite Lock, Wait Array
fil
Table Space Memory Cache, 5282 lines
rem
Records Abstraction, 4965 lines
sub-modules: Record Manager, Record Comparison Service
fsp
File Space Management, 4405 lines
ibuf
Insert Buffer, 4125 lines
ut
Utilities, 4113 lines
sub-modules: Vector, Random Numbers, Memory, List, Debug, Byte Manipulation, Work Queue
mem
Memory Management, 3598 lines
sub-modules: Memory Debug, Memory Pool
data
Data Element Abstraction, 2867 lines
sub-modules: Data Types
que
Query Graph, 2255 lines
mtr
Mini-transaction Buffer, 1967 lines
sub-modules: Mini-transaction Log
eval
SQL evaluator, 1603 lines
sub-modules: Stored Procedures
ha
Hash table, 1422 lines
mach
Machine Dependent Utilities, 1198 lines
fut
File Based Utilities, 951 lines
sub-modules: File Based List
read
Cursor Read, 788 lines
dyn
Dynamically Allocated Array, 560 lines
thr
Threads, 302 lines
sub-modules: Thread Local Storage
usr
Sessions, 163 lines
Congratulations to Oracle on MySQL 8.0
6 years ago
This comment has been removed by the author.
ReplyDeleteReally helpful blog! Thanks author :)
ReplyDeleteFor more information one can visit :-
ReplyDeletehttps://dev.mysql.com/doc/internals/en/files-in-innodb-sources.html
If some one desires to be updated with hottest technologies therefore he must be go to see this web page and be up to date daily.
ReplyDelete