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 …
At the January 2009 Boston User Group I presented a session on the new partitioning feature in MySQL 5.1. I go through how to define partitions, how partitioning makes queries faster, the different types of partitioning and when to use each type, and the restrictions and limitations of partitioning.
The slides are available at http://www.technocation.org/files/doc/2009_01_Partitioning.pdf. The 380.6 Mb .mov movie (1 hr 16 min) can be played directly in your browser at http://technocation.org/node/671/play or downloaded at http://technocation.org/node/671/download.
Notes:
The partitioning part of the MySQL Manual is at: …
At the January 2009 Boston User Group I presented a session on the new partitioning feature in MySQL 5.1. I go through how to define partitions, how partitioning makes queries faster, the different types of partitioning and when to use each type, and the restrictions and limitations of partitioning.
The sildes are available at http://www.technocation.org/files/doc/2009_01_Partitioning.pdf. The 380.6 Mb .mov movie (1 hr 16 min) can be played directly in your browser at http://technocation.org/node/671/play or downloaded at http://technocation.org/node/671/download.
We were running Drupal benchmarks to measure the performance of Drupal/Galera cluster and were surprised to find locking sessions (LOCK TABLES...UNLOCK) in the SQL profile. Locking sessions were originally left out of Galera supported feature set, but now we need to re-consider our policy a bit. Apparently, we are going to encounter more applications, which were originally written for MYISAM usage, but were later migrated to INNODB. As a rule of thumb, it seems that if application can be configured to both MyISAM and INNODB usage, it quite probably uses locking sessions as well.
Eager Replication
We have in the past, implemented one pretty effective method for
replicating locking sessions in synchronous cluster. This, "eager
replication" method, used transaction sequencing from group
communication level to order the table locks. However, the
implementation required eventually complete re-write of thr
locking …
Did you know that MySQL has stated principles for its products as
well as for its employees. It's a bit more substantial than your
average mission statement blah ;-)
Every person who once signed up to be an employee of the original
MySQL AB essentially also signed for upholding these principles,
but perhaps you haven't seen them. Since it is public info, why
not take a peek!
To me personally, both lists have always felt mainly like a
written down description of how Monty (MySQL's original author
and co-founder of MySQL AB) likes to work (and I do see that as a
positive thing). The product ones get quoted often enough, but
not the employee ones, so here's they are:
We want the people working on MySQL to:
- Subscribe to the Open Source philosophy
- Aim to be good citizens
- Prefer partners that share our values and mindset …
EnterpriseDB and Ingres just reported banner years, suggesting that open source is thriving beyond MySQL in the database market.
The point is part of the line.
The line is part of the circle.
The circle is the wheel of the car.
The point is that we will never know what the point is.
A couple of days ago, while fighting with removing warnings from the Sun Studio build of Drizzle, I got frustrated and took a break to tackle one of the little things I've been wanting to do for a while.
Delete gen_lex_hash
(Just in case gen_lex_hash means nothing to you, it's a tool in the MySQL and Drizzle source tree that creates hash structures containing the reserved symbols for easy lookup during parsing)
Now, don't get me wrong. It's not that I have anything in particular against the code in gen_lex_hash. It's more of an annoyance about building and using a custom code-generation tool when there is a perfectly good general purpose one out there in the Free Software universe.
I replaced gen_lex_hash with gperf, which is a GNU tool for generating perfect hashes. There are several wins here:
- We have no more tools that must be …
A couple of days ago, while fighting with removing warnings from the Sun Studio build of Drizzle, I got frustrated and took a break to tackle one of the little things I've been wanting to do for a while.
Delete gen_lex_hash
(Just in case gen_lex_hash means nothing to you, it's a tool in the MySQL and Drizzle source tree that creates hash structures containing the reserved symbols for easy lookup during parsing)
Now, don't get me wrong. It's not that I have anything in particular against the code in gen_lex_hash. It's more of an annoyance about building and using a custom code-generation tool when there is a perfectly good general purpose one out there in the Free Software universe.
I replaced gen_lex_hash with gperf, which is a GNU tool for generating perfect hashes. There are several wins here:
- We have no more tools that must be …