|
April 2007 - MySQL 5 now standard |
|
We are now offering MySQL version 5.0 standard on all hosting accounts.
The following features are implemented in MySQL 5.0.
-
BIT Data
Type: Can be used to store numbers in binary
notation.
-
Cursors: Elementary support
for server-side cursors.
-
Information Schema: The
introduction of the INFORMATION_SCHEMA
database in MySQL 5.0 provided a standards-compliant means
for accessing the MySQL Server's metadata; that is, data
about the databases (schemas) on the server and the objects
which they contain.
-
Precision Math: MySQL 5.0
introduced stricter criteria for acceptance or rejection of
data, and implemented a new library for fixed-point
arithmetic. These contributed to a much higher degree of
accuracy for mathematical operations and greater control
over invalid values.
-
Stored Routines: Support
for named stored procedures and stored functions was
implemented in MySQL 5.0.
-
Triggers: MySQL 5.0 added
limited support for triggers.
-
VARCHAR Data
Type: The maximum effective length of a
VARCHAR column was increased to 65,535
bytes, and stripping of trailing whitespace was eliminated.
(The actual maximum length of a VARCHAR
is determined by the maximum row size and the character set
you use. The maximum effective column
length is subject to a row size of 65,532 bytes.)
-
Views: MySQL 5.0 added
support for named, updatable views.
-
XA Transactions.
-
Performance enhancements: A
number of improvements were made in MySQL 5.0 to improve the
speed of certain types of queries and in the handling of
certain types. These include:
-
MySQL 5.0 introduces a new “greedy”
optimizer which can greatly reduce the time required to
arrive at a query execution plan. This is particularly
noticeable where several tables are to be joined and no
good join keys can otherwise be found. Without the
greedy optimizer, the complexity of the search for an
execution plan is calculated as
N!, where
N is the number of tables to
be joined. The greedy optimizer reduces this to
N!/(D-1)!,
where D is the depth of the
search. Although the greedy optimizer does not guarantee
the best possible of all execution plans (this is
currently being worked on), it can reduce the time spent
arriving at an execution plan for a join involving a
great many tables — 30, 40, or more — by a
factor of as much as 1,000. This should eliminate most
if not all situations where users thought that the
optimizer had hung when trying to perform joins across
many tables.
-
Use of the Index Merge method to
obtain better optimization of AND and
OR relations over different keys.
(Previously, these were optimized only where both
relations in the WHERE clause
involved the same key.) This also applies to other
one-to-one comparison operators
(>, <, and
so on), including = and the
IN operator. This means that MySQL
can use multiple indexes in retrieving results for
conditions such as WHERE key1 > 4 OR key2
< 7 and even combinations of conditions
such as WHERE (key1 > 4 OR key2 < 7) AND
(key3 >= 10 OR key4 = 1).
-
A new equality detector finds and optimizes
“hidden” equalities in joins. For example,
a WHERE clause such as
t1.c1=t2.c2 AND t2.c2=t3.c3 AND t1.c1 < 5
implies these other conditions
t1.c1=t3.c3 AND t2.c2 < 5 AND t3.c3 < 5
These optimizations can be applied with any combination
of AND and OR
operators.
-
Optimization of NOT IN and
NOT BETWEEN relations, reducing or
eliminating table scans for queries making use of them
by mean of range analysis. The performance of MySQL with
regard to these relations now matches its performance
with regard to IN and
BETWEEN.
-
The VARCHAR data type as implemented
in MySQL 5.0 is more efficient than in previous
versions, due to the elimination of the old (and
nonstandard) removal of trailing spaces during
retrieval.
-
The addition of a true BIT column
type; this type is much more efficient for storage and
retrieval of Boolean values than the workarounds
required in MySQL in versions previous to 5.0.
-
Performance Improvements in the
InnoDB Storage Engine:
-
New compact storage format which can save up to 20%
of the disk space required in previous
MySQL/InnoDB versions.
-
Faster recovery from a failed or aborted
ALTER TABLE.
-
Faster implementation of
TRUNCATE.
-
Performance Improvements in the
NDBCluster Storage Engine:
-
Faster handling of queries that use
IN and
BETWEEN.
-
Condition pushdown:
In cases involving the comparison of an unindexed
column with a constant, this condition is
“pushed down” to the cluster where it
is evaluated in all partitions simultaneously,
eliminating the need to send non-matching records
over the network. This can make such queries 10 to
100 times faster than in MySQL 4.1 Cluster.
|