The following features have been added to MySQL 5.1.
Partitioning: This
capability enables distributing portions of individual
tables across a filesystem, according to rules which can be
set when the table is created. In effect, different portions
of a table are stored as separate tables in different
locations, but from the user point of view, the partitioned
table is still a single table. Syntactically, this
implements a number of new extensions to the CREATE
TABLE, ALTER TABLE, and
EXPLAIN ... SELECT statements. As of
MySQL 5.1.6, queries against partitioned tables can take
advantage of partition pruning. In some
cases, this can result in query execution that is an order
of magnitude faster than the same query against a
non-partitioned version of the same table. See
Chapter 16, Partitioning, for further information on
this functionality. (Author: Mikael Ronström)
Row-based replication: Replication capabilities in MySQL originally were based on propagation of SQL statements from master to slave. This is called statement-based replication. As of MySQL 5.1.5, another basis for replication is available. This is called row-based replication. Instead of sending SQL statements to the slave, the master writes events to its binary log that indicate how individual table rows are effected. As of MySQL 5.1.8, a third option is available: mixed. This will use statement-based replication by default, and only switch to row-based replication in particular cases. See Section 6.1.2, “Replication Formats”. (Authors: Lars Thalmann, Guilhem Bichot, Mats Kindahl)
Plugin API: MySQL 5.1 adds support for a very flexible plugin API that enables loading and unloading of various components at runtime, without restarting the server. Although the work on this is not finished yet, plugin full-text parsers are a first step in this direction. This allows users to implement their own input filter on the indexed text, enabling full-text search capability on arbitrary data such as PDF files or other document formats. A pre-parser full-text plugin performs the actual parsing and extraction of the text and hands it over to the built-in MySQL full-text search. See Section 26.2, “The MySQL Plugin Interface”. (Author: Sergey Vojtovich)
Event scheduler: MySQL
Events are tasks that run according to a schedule. When you
create an event, you are creating a named database object
containing one or more SQL statements to be executed at one
or more regular intervals, beginning and ending at a
specific date and time. Conceptually, this is similar to the
idea of the Unix crontab (also known as a
“cron job”) or the Windows Task Scheduler. See
Chapter 20, Event Scheduler. (Author: Andrey Hristov)
Server log tables: Before
MySQL 5.1, the server writes general query log and slow
query log entries to log files. As of MySQL 5.1, the
server's logging capabilities for these logs are more
flexible. Log entries can be written to log files (as
before) or to the general_log and
slow_log tables in the
mysql database. If logging is enabled,
either or both destinations can be selected. The
--log-output option controls the
destination or destinations of log output. See
Section 5.11.1, “Selecting General Query and Slow Query Log Output Destinations”. (Author: Petr Chardin)
The Instance Manager (IM)
now has some additional functionality: SHOW
provides a listing of all log files, instance_name LOG FILESSHOW
retrieves
a part of the specified log file, and instance_name LOG {ERROR | SLOW |
GENERAL} sizeSET
sets an option to the specified value and writes it to the
configuration file. See Section 5.4, “mysqlmanager — The MySQL Instance Manager”.
(Author: Petr Chardin)
instance_name.option_name=option_value
Upgrade program: The mysql_upgrade program (available as of MySQL 5.1.7) checks all existing tables for incompatibilities with the current version of MySQL Server and repairs them if necessary. This program should be run for each MySQL upgrade. See Section 5.5.7, “mysql_upgrade — Check Tables for MySQL Upgrade”. (Authors: Alexey Botchkov, Mikael Widenius)
Replication between MySQL Clusters is now supported. It is now also possible to replicate between a MySQL Cluster and a non-cluster database. See Section 15.10, “MySQL Cluster Replication”.
MySQL Cluster Disk Data: In
MySQL versions previous to 5.1.6, the
NDBCluster storage engine was strictly
in-memory; beginning with MySQL 5.1.6, it is possible to
store Cluster data (but not indexes) on disk. This allows
MySQL Cluster to scale upward with fewer hardware (RAM)
requirements than previously. See
Section 15.11, “MySQL Cluster Disk Data Tables”.
The Disk Data implementation includes a new “no-steal” restoration algorithm for fast node restarts when storing very large amounts of data (terabyte range).
Online ADD INDEX
and DROP INDEX for MySQL
Cluster: Adding and dropping indexes is now much
faster for tables using the NDB storage
engine than in previous versions of MySQL Cluster. This is
due to the fact that NDB no longer needs
to re-create tables, but instead can now apply these schema
changes directly to existing tables.
Improved backup implementation in MySQL Cluster: A fault arising in a single data node during a Cluster backup no longer causes the entire backup to be aborted, as occurred in previous versions of MySQL Cluster.
Backup of tablespaces: The
mysqldump utility now supports an option
for dumping tablespaces. Use -Y or
--all-tablespaces to enable this
functionality.
Improvements to
INFORMATION_SCHEMA: MySQL 5.1
provides much more information in its metadata database. New
tables in that database include FILES,
EVENTS, PARTITIONS,
PROCESSLIST, ENGINES,
and PLUGINS.
XML functions:
ExtractValue() returns the content of a
fragment of XML matching a given XPath expression.
UpdateXML() replaces the element selected
from a fragment of XML by an XPath expression supplied by
the user with a second XML fragment (also user-supplied),
and returns the modified XML. See
Section 12.10, “XML Functions”. (Author: Alexander Barkov)
Load emulator: The mysqlslap program is designed to emulate client load for a MySQL server and report the timing of each stage. It works as if multiple clients were accessing the server. See Section 8.17, “mysqlslap — Load Emulation Client”. (Authors: Patrick Galbraith, Brian Aker)

User Comments
Add your own comment.