MySQL 5.1.41
MySQL是现在最流行一个多线程的,结构化查询语言(SQL)数据库服务器.绝大多数PHP网站的数据库后台都是采用这一数据库.
MySQL 的执行性能非常高,运行速度非常快,并非常容易使用.是一个非常捧的数据库.
下载:MySQL 5.1.41
查看:Changes in MySQL 5.1.41 (05 November 2009)
C.1.1. Changes in MySQL 5.1.41 (05 November 2009)
Functionality added or changed:
- The
InnoDBbuffer pool is divided into two sublists: A new sublist containing blocks that are heavily used by queries, and an old sublist containing less-used blocks and from which candidates for eviction are taken. In the default operation of the buffer pool, a block when read in is loaded at the midpoint and then moved immediately to the head of the new sublist as soon as an access occurs. In the case of a table scan (such as performed for a mysqldump operation), each block read by the scan ends up moving to the head of the new sublist because multiple rows are accessed from each block. This occurs even for a one-time scan, where the blocks are not otherwise used by other queries. Blocks may also be loaded by the read-ahead background thread and then moved to the head of the new sublist by a single access. These effects can be disadvantageous because they push blocks that are in heavy use by other queries out of the new sublist to the old sublist where they become subject to eviction.InnoDB Pluginnow provides two system variables that enable LRU algorithm tuning:innodb_old_blocks_pctSpecifies the approximate percentage of the buffer pool used for the old block sublist. The range of values is 5 to 95. The default value is 37 (that is, 3/8 of the pool).
innodb_old_blocks_timeSpecifies how long in milliseconds (ms) a block inserted into the old sublist must stay there after its first access before it can be moved to the new sublist. The default value is 0: A block inserted into the old sublist moves immediately to the new sublist the first time it is accessed, no matter how soon after insertion the access occurs. If the value is greater than 0, blocks remain in the old sublist until an access occurs at least that many ms after the first access. For example, a value of 1000 causes blocks to stay in the old sublist for 1 second after the first access before they become eligible to move to the new sublist. See Section 7.4.6, “The
InnoDBBuffer Pool”
For additional information, see Section 7.4.6, “The
InnoDBBuffer Pool”. (Bug#45015) - For
InnoDB Plugin, two new status variables have been added toSHOW STATUSoutput.Innodb_buffer_pool_read_aheadandInnodb_buffer_pool_read_ahead_evictedindicate the number of pages read in by theInnoDBread-ahead background thread, and the number of such pages evicted without ever being accessed, respectively. Also, the status variablesInnodb_buffer_pool_read_ahead_rndandInnodb_buffer_pool_read_ahead_seqstatus variables have been removed.The built-in version of
InnoDBis not affected by these changes. (Bug#42885) InnoDB Pluginhas been upgraded to version 1.0.5. This version is considered of Release Candidate (RC) quality.- The server now supports a Debug Sync facility for thread synchronization during testing and debugging. To compile in this facility, configure MySQL with the
--enable-debug-syncoption. Thedebug_syncsystem variable provides the user interface Debug Sync. mysqld and mysql-test-run.pl support a--debug-sync-timeoutoption to enable the facility and set the default synchronization point timeout.
Bugs fixed:
- Important Change: Security Fix: Additional corrections were made for the symlink-related privilege problem originally addressed in MySQL 5.1.24. The original fix did not correctly handle the data directory path name if it contained symlinked directories in its path, and the check was made only at table-creation time, not at table-opening time later. (Bug#32167, CVE-2008-2079)
See also Bug#39277.
- Security Fix: MySQL clients linked against OpenSSL did not check server certificates presented by a server linked against yaSSL. (Bug#47320)
- Partitioning: An
ALTER TABLE ... ADD PARTITIONstatement that causedopen_files_limitto be exceeded led to a crash of the MySQL server. (Bug#46922)See also Bug#47343.
- Partitioning: The cardinality of indexes on partitioned tables was calculated using the first partition in the table, which could result in suboptimal query execution plans being chosen. Now the partition having the most records is used instead, which should result in better use of indexes and thus improved performance of queries against partitioned tables in many if not most cases. (Bug#44059)
- Replication: This issue occurred in MySQL 5.1.40 only. (Bug#48297)
- Replication: When a session was closed on the master, temporary tables belonging to that session were logged with the wrong database names when either of the following conditions was true:
- The length of the name of the database to which the temporary table belonged was greater than the length of the current database name.
- The current database was not set.
- Replication: When using row-based replication, changes to non-transactional tables that occurred early in a transaction were not immediately flushed upon committing a statement. This behavior could break consistency since changes made to non-transactional tables become immediately visible to other connections. (Bug#47678)
- Replication: When mysqlbinlog
--verbosewas used to read a binary log that had been recorded using the row-based format, the output for events that updated some but not all columns of tables was not correct. (Bug#47323) - Replication: When using the row-based format to replicate a transaction involving both transactional and non-transactional engines, which contained a DML statement affecting multiple rows, the statement failed; if this transaction was followed by a
COMMIT, the master and the slave could diverge, because the statement was correctly rolled back on the master, but was applied on the slave. (Bug#47287)See also Bug#46864.
- Replication: A problem with the
BINLOGstatement in the output of mysqlbinlog could break replication; statements could be logged with the server ID stored within events by theBINLOGstatement rather than the ID of the running server. With this fix, the server ID of the server executing the statements can no longer be overridden by the server ID stored in the binary log'sformat descriptionstatement. (Bug#46640)This regression was introduced by Bug#32407.
- Replication: When using statement-based replication and the transaction isolation level was set to
READ COMMITTEDor a less strict level,InnoDBreturned an error even if the statement in question was filtered out according to the--binlog-do-dbor--binlog-ignore-dbrules in effect at the time. (Bug#42829) - Replication:
FLUSH LOGSdid not actually close and reopen the binary log index file. (Bug#34582) - Error handling was missing for
SELECTstatements containing subqueries in theWHEREclause and that assigned aSELECTresult to a user variable. The server could crash as a result. (Bug#48291) - An assertion could fail if the optimizer used a
SPATIALindex. (Bug#48258, Bug#47019) - A combination of
GROUP BY WITH ROLLUP,DISTINCTand theconstjoin type in a query caused a server crash when the optimizer chose to employ a temporary table to resolveDISTINCT. (Bug#48131) - In some cases, using a null microsecond part in a
WHEREcondition (for example,WHERE date_time_field <= 'YYYY-MM-DD HH:MM:SS.0000') could lead to incorrect results due to improperDATETIMEcomparison. (Bug#47963) - A build configured using the
--without-serveroption did not compile the yaSSL code, so if--with-sslwas also used, the build failed. (Bug#47957) mysys/mf_keycache.crequires threading, but no test was made for thread support. (Bug#47923)- For debug builds, an assertion could fail during the next statement executed for a temporary table after a multiple-table
UPDATEinvolving that table and modified anAUTO_INCREMENTcolumn with a user-supplied value. (Bug#47919) - The
mysys/mf_strip.cfile, which defines thestrip_sphas been removed from the MySQL source. The function was no longer in use within the main build, and the supplied function was causing symbol errors on Windows builds. (Bug#47857) - The Windows build for MySQL would compile the
split.canddebug.cfiles unnecessarily, causing additional symbols to be included in mysqld. (Bug#47850) - When building storage engines on Windows it was not possible to specify additional libraries within the CMake file required for the build. An
${engine}_LIBSmacro has been added to the files to support these additional storage-engine specific libraries. (Bug#47797) - When building a pluggable storage engine on Windows, the engine name could be based on the directory name where the engine was located, rather than the configured storage engine name. (Bug#47795)
- During cleanup of a stored procedure's internal structures, the flag to ignore the errors for
INSERT IGNOREorUPDATE IGNOREwas not cleaned up, which could result in a server crash. (Bug#47788) - If the first argument to
GeomFromWKB()function was a geometry value, the function just returned its value. However, it failed to preserve the argument'snull_valueflag, which caused an unexpectedNULLvalue to be returned to the caller, resulting in a server crash. (Bug#47780) InnoDBcould crash when updating spatial values. (Bug#47777)- On WIndows, when an idle named pipe connection was forcibly closed with a
KILLstatement or because the server was being shut down, the thread that was closing the connection would hang infinitely. (Bug#47571, Bug#31621) - A function call could end without throwing an error or setting the return value. For example, this could happen when an error occurred while calculating the return value. This is fixed by setting the value to
NULLwhen an error occurs during evaluation of an expression. (Bug#47412) - A simple
SELECTwith implicit grouping could return many rows rather than a single row if the query was ordered by the aggregated column in the select list. (Bug#47280) - An assertion could be raised for
CREATE TABLEif there was a pendingINSERT DELAYEDorREPLACE DELAYEDfor the same table. (Bug#47274) - Incorrect handling of predicates involving
NULLby the range optimizer could lead to to an infinite loop during query execution. (Bug#47123) - Repair by sort or parallel repair of
MyISAMtables could fail to fail over to repair with key cache. (Bug#47073) - On WIndows, when a failed I/O operation occurred with return code of
ERROR_WORKING_SET_QUOTA,InnoDBintentionally crashed the server. NowInnoDBsleeps for 100ms and retries the failed operation. (Bug#47055) - When MySQL crashed (or a snapshot was taken that simulates a crash), it was possible that internal XA transactions (used to synchronize the binary log and
InnoDB) could be left in aPREPAREDstate, whereas they should be rolled back. This occurred when theserver_idvalue changed before the restart, because that value was used to construct XID values.Now the restriction is relaxed that the
server_idvalue be consistent for XID values to be considered valid. The rollback phase should then be able to clean up all pending XA transactions. (Bug#46944) - If
InnoDB Pluginreached its limit on the number of concurrent transactions (1023), it wrote a descriptive message to the error log but returned a misleading error message to the client, or an assertion failure occurred. (Bug#46672)See also Bug#18828.
- Concurrent
INSERT INTO ... SELECTstatements for anInnoDBtable could cause anAUTO_INCREMENTassertion failure. (Bug#46650) - If a transaction was rolled back inside
InnoDBdue to a deadlock or lock wait timeout, and a statement in the transaction had anIGNOREclause, the server could crash at the end of the statement or on shutdown. (Bug#46539) - Trailing spaces were not ignored for user-defined collations that mapped spaces to a character other than 0x20. (Bug#46448)
See also Bug#29468.
- The GPL and commercial license headers had different sizes, so that error log, backtrace, core dump, and cluster trace file line numbers could be off by one if they were not checked against the version of the source used for the build. (For example, checking a GPL build backtrace against commercial sources.) (Bug#46216)
InnoDBdid not disallow creation of an index with the nameGEN_CLUST_INDEX, which is used internally. (Bug#46000)- During the build of the Red Hat IA64 MySQL server RPM, the system library link order was incorrect. This made the resulting Red Hat IA64 RPM depend on "libc.so.6.1(GLIBC_PRIVATE)(64bit)", thus preventing installation of the package. (Bug#45706)
- The
caseinfomember of theCHARSET_INFOstructure was not initialized for user-defined Unicode collations, leading to a server crash. (Bug#45645) - With
InnoDB Plugin, renaming a table column and then creating an index on the renamed column caused a server crash to to the.frmfile and theInnoDBdata directory going out of sync. NowInnoDB Plugin1.0.5 returns an error instead:ERROR 1034 (HY000): Incorrect key file for table '. To work around the problem, create another table with the same structure and copy the original table to it. (Bug#44571)tbl_name'; try to repair it - An
InnoDBerror message incorrectly referred to the nonexistentinnodb_max_files_openvariable rather than toinnodb_open_files. (Bug#44338) - For
ALTER TABLE, renaming aDATETIMEorTIMESTAMPcolumn unnecessarily caused a table copy operation. (Bug#43508) - The weekday names for the Romanian
lc_time_nameslocale'ro_RO'were incorrect. Thanks to Andrei Boros for the patch to fix this bug. (Bug#43207) XA STARTcould cause an assertion failure or server crash when it is called after a unilateral rollback issued by the Resource Manager (both in a regular transaction and after an XA transaction). (Bug#43171)- The
FORCE INDEX FOR ORDER BYindex hint was ignored when join buffering was used. (Bug#43029) - Incorrect handling of range predicates combined with
ORoperators could yield incorrect results. (Bug#42846) - Failure to treat
BITvalues as unsigned could lead to unpredictable results. (Bug#42803) - For the embedded server on Windows,
InnoDBcrashed wheninnodb_file_per_tablewas enabled and a table name was in full path format. (Bug#42383) - In a replication scenario with
innodb_locks_unsafe_for_binlogenabled on the slave, where rows were changed only on the slave (not through replication), in some rare cases, many messages of the following form were written to the slave error log:InnoDB: Error: unlock row could not find a 4 mode lock on the record. (Bug#41756) - With a nonstandard
InnoDBpage size, some error messages became inaccurate. (Bug#41490) - Simultaneous
ANALYZE TABLEoperations for anInnoDBtables could be subject to a race condition. (Bug#38996) - Previously,
InnoDBperformedREPLACE INTO T SELECT ... FROM S WHERE ...by setting shared next-key locks on rows fromS. NowInnoDBselects rows from fromSwith shared locks or as a consistent read, as forINSERT ... SELECT. This reduces lock contention between sessions. (Bug#37232) - When an
InnoDBtablespace filled up, an error was logged to the client, but not to the error log. Also, the error message was misleading and did not indicate the real source of the problem. (Bug#31183) - In mysql, using Control-C to kill the current query resulted in a
ERROR 1053 (08S01): Server shutdown in progress" messageif the query was waiting for a lock. (Bug#28141)
快速链接:http://ensoft.yo2.cn/go/664123.html
Rand Posts:
Filed under: 精品软件