MySQL 在设计之初就是以速度为第一考虑。MySQL已经被实际应用在内容数百万笔资料,且大小超过100 GB 的数据库上。是一个很可靠的系统。 MySQL 目前虽然提供了源代码,但并非完全免费,个人或公司内部使用是免费的,但当你贩卖含 MySQL 的产品时、你收取维护 MySQL 的费用时、以及将 MySQL 包含在不可散布(redistribution)的产品时便要收费。虽然 MySQL 至今尚未支援标准SQL 的许多语法,如 nested select 或 transaction,但是由于 MySQL 的执行速度相当快,许多大型的入口站点都采用了 MySQL。
Functionality added or changed:
The CHAR() function now takes an optional USING charset clause that may be used to produce a result in a specific character set rather than in the connection character set.
MySQL 4.1 now supports character set conversion for seven additional cp950 characters into the big5 character set: 0xF9D6, 0xF9D7, 0xF9D8, 0xF9D9, 0xF9DA, 0xF9DB, and 0xF9DC. Note: If you move data containing these additional characters to an older MySQL installation which does not support them, you may encounter errors. (Bug #12476)
NDBCluster: The perror utility included with the MySQL-Server RPM now provides support for the --ndb option, and so can be used to obtain error message text for MySQL Cluster error codes. (Bug #13740)
When executing single-table UPDATE or DELETE queries containing an ORDER BY ... LIMIT N clause, but not having any WHERE clause, MySQL can now take advantage of an index to read the first N rows in the ordering specified in the query. If an index is used, only the first N records will be read, as opposed to scanning the entire table. (Bug #12915)
The MySQL-server RPM now explicitly assigns the mysql system user to the mysql user group during the postinstallation process. This corrects an issue with upgrading the server on some Linux distributions whereby a previously existing mysql user was not changed to the mysql group, resulting in wrong groups for files created following the installation. (Bug #12823)
Bugs fixed:
Perform character set conversion of constant values whenever possible without data loss. (Bug #10446)
A UNION of DECIMAL columns could produce incorrect results. (Bug #14216)
InnoDB: Pad UTF-8 VARCHAR columns with 0x20. Pad UCS2 CHAR columns with 0x0020. (Bug #10511)
Full-text indexing/searching failed for words that end with more than one apostrophe. (Bug #5686)
Selecting from a table in both an outer query and a subquery could cause a server crash. (Bug #14482)
Creating a table containing an ENUM or SET column from within a stored procedure or prepared statement caused a server crash later when executing the procedure or statement. (Bug #14410)
mysql_fix_privilege_tables.sql contained an erroneous comment that resulted in an error when the file contents were processed. (Bug #14469)
On Windows, the server could crash during shutdown if both replication threads and normal client connection threads were active. (Re-fix of Bug #11796)
A LIMIT-related optimization failed to take into account that MyISAM table indexes can be disabled, causing Error 124 when it tried to use such an index. (Bug #14616)
For a table that had been opened with HANDLER OPEN, issuing OPTIMIZE TABLE, ALTER TABLE, or REPAIR TABLE caused a server crash. (Bug #14397)
CREATE TABLE tbl_name (…) SELECT … could crash the server and write invalid data into the .frm file if the CREATE TABLE and SELECT both contained a column with the same name. Also, if a default value is specified in the column definition, it is now actually used. (Bug #14480)
For MyISAM tables, incorrect query results or incorrect updates could occur under these conditions: There is a multiple-column index that includes a BLOB column that is not the last column in the index, and the statement performs a lookup on the index using key column values that have NULL for the BLOB column and that provide values for all columns up to the BLOB column and at least the next column in the index. (Bug #13814)
Deletes from a CSV table could cause table corruption. (Bug #14672)
An update of a CSV table could cause a server crash. (Bug #13894)
mysqld_safe did not correctly start the -max version of the server (if it was present) if the --ledir option was given. (Bug #13774)
The endian byte in for spatial values in WKB format was not consistently respected. (Bug #12839)
An expression in an ORDER BY clause failed with Unknown column ’col_name’ in ’order clause’ if the expression referred to a column alias. (Bug #11694)
Statements of the form CREATE TABLE … SELECT … that created a column with a multi-byte character set could incorrectly calculate the maximum length of the column, resulting in a Specified key was too long error. (Bug #14139)
Use of col_name = VALUES(col_name) in the ON DUPLICATE KEY UPDATE clause of an INSERT statement failed with an Column ’col_name’ in field list is ambiguous error. (Bug #13392)
On Windows, the server was not ignoring hidden or system directories that Windows may have created in the data directory, and would treat them as available databases. (Bug #4375)
LIKE operations did not work reliably for the cp1250 character set. (Bug #13347)
Maximum values were handled incorrectly for command-line options of type GET_LL. (Bug #12925)
Use of WITH ROLLUP PROCEDURE ANALYSE() could hang the server. (Bug #14138)
TIMEDIFF(), ADDTIME(), and STR_TO_DATE() were not reporting that they could return NULL, so functions that invoked them might misinterpret their results. (Bug #14009)
The example configuration files supplied with MySQL distributions listed the thread_cache_size variable as thread_cache. (Bug #13811)
LOAD DATA INFILE would not accept the same character for both the ESCAPED BY and the ENCLOSED BY clauses. (Bug #11203)
NDB Cluster: Repeated transactions using unique index lookups could cause a memory leak leading to error 288, Out of index operations in transaction coordinator. (Bug #14199)
SELECT DISTINCT CHAR(col_name) returned incorrect results after SET NAMES utf8. (Bug #13233)
Character set conversion was not being done for FIND_IN_SET(). (Bug #13751)
The default value of query_prealloc_size was set to 8192, lower than its minimum of 16384. The minimum has been lowered to 8192. (Bug #13334)
The server did not take character set into account in checking the width of the mysql.user.Password column. As a result, it could incorrectly generate long password hashes even if the column was not long enough to hold them. (Bug #13064)
CAST(1E+300 TO SIGNED INT) produced an incorrect result on little-endian machines. (Bug #13344)
mysqladmin and mysqldump would hang on SCO OpenServer. (Bug #13238)
Specifying --default-character-set=cp-932 for mysqld would cause SQL scripts containing comments written using that character set to fail with a syntax error. (Bug #13487)
Given a column col_name defined as NOT NULL, a SELECT ... FROM ... WHERE col_name IS NULL query following SHOW TABLE STATUS would erroneously return a non-empty result. (Bug #13535)
Corrected a memory-copying problem for big5 values when using icc compiler on Linux IA-64 systems. (Bug #10836)
On BSD systems, the system crypt() call could return an error for some salt values. The error was not handled, resulting in a server crash. (Bug #13619)
Character set file parsing during mysql_real_connect() read past the end of a memory buffer. (Bug #6413)
The --interactive-timeout and --slave-net-timeout options for mysqld were not being obeyed on Mac OS X and other BSD-based platforms. (Bug #8731)
Queries of the form (SELECT ...) ORDER BY ... were being treated as a UNION. This improperly resulted in only distinct values being returned (because UNION by default eliminates duplicate results). Also, references to column aliases in ORDER BY clauses following parenthesized SELECT statements were not resolved properly. (Bug #7672)
Multiple update queries using any type of subquery would be ignored by a replication slave when a condition such as --replicate-ignore-table like condition was used. (Bug #13236)
An UPDATE query using a join would be executed incorrectly on a replication slave. (Bug #12618)
NDBCluster: Placing multiple [TCP DEFAULT] sections in the cluster config.ini file crashed ndb_mgmd. (The process now exits gracefully with an appropriate error message.) (Bug #13611)
Multiple race conditions existed in OpenSSL, particularly noticeable on Solaris. (Bug #9270)
With --log-slave-updates Exec_master_log_pos of SQL thread lagged IO (Bug #13023)
PURGE MASTER LOGS statement that used subselect for date crashed server. (Bug #10308)