MySQL 5.1.41 リリース
投稿日時 2009-11-19 14:42:44 | トピック: MySQL 5.1
| MySQL 5.1.41 がリリースされました。 このバージョンに含まれている InnoDB Plugin 1.0.5 が ついに RC (Release Candidate)になりました! GAになるのが楽しみですね。 InnoDB Plugin が 従来の組込型 InnoDB と比べて何が優れているのかについては、 サンマイクロシステムズ松信氏の以下のエントリに詳しいです。 http://opendatabaselife.blogspot.com/2009/08/innodb-plugin-104-innodb.html (追記)InnoDB のバッファプール管理について、組込InnoDB と InnoDB Plugin の動作の違い(Plugin 化されて進化した部分)を sh2氏が非常にわかりやすくまとめています。 http://d.hatena.ne.jp/sh2/20091120
ダウンロードはこちらから。 http://dev.mysql.com/downloads/mysql/5.1.html
---------------------- 以下チェンジログ
■機能の追加と変更(5.1.41): * In the default operation of the InnoDB buffer pool, a block is loaded at the midpoint for the first access and then moved immediately to the head of the list as soon as another 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 list 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 are 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 Plugin now provides two system variables that enable LRU algorithm tuning:
+ innodb_old_blocks_pct Specifies 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_time Specifies how long in milliseconds (ms) a block inserted into the old sublist must stay there before it can be moved to the new sublist. The default value is 0, so after a block is inserted into the old sublist, it moves immediately to the new sublist the next time it is accessed, no matter how soon after insertion the next 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 initial insertion. For example, a value of 1000 causes blocks to stay in the old sublist for 1 second before moving to the new sublist. For additional information, see Section 7.4.6, "The InnoDB Buffer Pool." (Bug#45015: http://bugs.mysql.com/45015)
* For InnoDB Plugin, two new status variables have been added to SHOW STATUS output. Innodb_buffer_pool_read_ahead and Innodb_buffer_pool_read_ahead_evicted indicate the number of pages read in by the InnoDB read-ahead background thread, and the number of such pages evicted without ever being accessed, respectively. Also, the status variables Innodb_buffer_pool_read_ahead_rnd and Innodb_buffer_pool_read_ahead_seq status variables have been removed. The built-in version of InnoDB is not affected by these changes. (Bug#42885: http://bugs.mysql.com/42885)
* InnoDB Plugin has 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-sync option. The debug_sync system variable provides the user interface Debug Sync. mysqld and mysql-test-run.pl support a --debug-sync-timeout option to enable the facility and set the default synchronization point timeout.
■バグ修正(5.1.41): * Partitioning: An ALTER TABLE ... ADD PARTITION statement that caused open_files_limit to be exceeded led to a crash of the MySQL server. (Bug#46922: http://bugs.mysql.com/46922) See also Bug#47343: http://bugs.mysql.com/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: http://bugs.mysql.com/44059)
* Replication: When using statement-based or mixed-format replication, the database name was not written to the binary log when executing a LOAD DATA statement. This caused problems when the table being loaded belonged to a database other than the current database; data could be loaded into the wrong table (if a table having the same name existed in the current database) or replication could fail (if no table having that name existed in the current database). Now a table referenced in a LOAD DATA statement is always logged using its fully qualified name when the database to which it belongs is not the current database. This issue occurred in MySQL 5.1.40 only. (Bug#48297: http://bugs.mysql.com/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:
1. The length of the name of the database to which the temporary table belonged was greater than the length of the current database name.
2. The current database was not set. (Bug#48216: http://bugs.mysql.com/48216) See also Bug#46861: http://bugs.mysql.com/46861, Bug#48297: http://bugs.mysql.com/48297.
* 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: http://bugs.mysql.com/47678) See also Bug#47287: http://bugs.mysql.com/47287, Bug#46864: http://bugs.mysql.com/46864, Bug#43929: http://bugs.mysql.com/43929, Bug#46129: http://bugs.mysql.com/46129.
* Replication: When mysqlbinlog --verbose was 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: http://bugs.mysql.com/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: http://bugs.mysql.com/47287) See also Bug#46864: http://bugs.mysql.com/46864.
* Replication: A problem with the BINLOG statement in the output of mysqlbinlog could break replication; statements could be logged with the server ID stored within events by the BINLOG statement 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's format description statement. (Bug#46640: http://bugs.mysql.com/46640) This regression was introduced by Bug#32407: http://bugs.mysql.com/32407.
* Replication: When using statement-based replication and the transaction isolation level was set to READ COMMITTED or a less strict level, InnoDB returned an error even if the statement in question was filtered out according to the --binlog-do-db or --binlog-ignore-db rules in effect at the time. (Bug#42829: http://bugs.mysql.com/42829)
* Replication: FLUSH LOGS did not actually close and reopen the binary log index file. (Bug#34582: http://bugs.mysql.com/34582)
* A build configured using the --without-server option did not compile the yaSSL code, so if --with-ssl was also used, the build failed. (Bug#47957: http://bugs.mysql.com/47957)
* mysys/mf_keycache.c requires threading, but no test was made for thread support. (Bug#47923: http://bugs.mysql.com/47923)
* The mysys/mf_strip.c file, which defines the strip_sp has 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: http://bugs.mysql.com/47857)
* The Windows build for MySQL would compile the split.c and debug.c files unnecessarily, causing additional symbols to be included in mysqld. (Bug#47850: http://bugs.mysql.com/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}_LIBS macro has been added to the files to support these additional storage-engine specific libraries. (Bug#47797: http://bugs.mysql.com/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: http://bugs.mysql.com/47795)
* On Windows, when an idle named pipe connection was forcibly closed with a KILL statement or because the server was being shut down, the thread that was closing the connection would hang infinitely. (Bug#47571: http://bugs.mysql.com/47571, Bug#31621: http://bugs.mysql.com/31621)
* A simple SELECT with 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: http://bugs.mysql.com/47280)
* An assertion could be raised for CREATE TABLE if there was a pending INSERT DELAYED or REPLACE DELAYED for the same table. (Bug#47274: http://bugs.mysql.com/47274)
* Incorrect handling of predicates involving NULL by the range optimizer could lead to to an infinite loop during query execution. (Bug#47123: http://bugs.mysql.com/47123)
* Repair by sort or parallel repair of MyISAM tables could fail to fail over to repair with key cache. (Bug#47073: http://bugs.mysql.com/47073)
* If InnoDB reached 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: http://bugs.mysql.com/46672) See also Bug#18828: http://bugs.mysql.com/18828.
* Concurrent INSERT INTO ... SELECT statements for an InnoDB table could cause an AUTO_INCREMENT assertion failure. (Bug#46650: http://bugs.mysql.com/46650)
* Trailing spaces were not ignored for user-defined collations that mapped spaces to a character other than 0x20. (Bug#46448: http://bugs.mysql.com/46448) See also Bug#29468: http://bugs.mysql.com/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: http://bugs.mysql.com/46216)
* InnoDB did not disallow creation of an index with the name GEN_CLUST_INDEX, which is used internally. (Bug#46000: http://bugs.mysql.com/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: http://bugs.mysql.com/45706)
* With InnoDB Plugin, renaming a table column and then creating an index on the renamed column caused a server crash to to the .frm file and the InnoDB data directory going out of sync. Now InnoDB Plugin 1.0.5 returns an error instead: ERROR 1034 (HY000): Incorrect key file for table 'tbl_name'; try to repair it. To work around the problem, create another table with the same structure and copy the original table to it. (Bug#44571: http://bugs.mysql.com/44571)
* An InnoDB error message incorrectly referred to the nonexistent innodb_max_files_open variable rather than to innodb_open_files. (Bug#44338: http://bugs.mysql.com/44338)
* The FORCE INDEX FOR ORDER BY index hint was ignored when join buffering was used. (Bug#43029: http://bugs.mysql.com/43029)
* Incorrect handling of range predicates combined with OR operators could yield incorrect results. (Bug#42846: http://bugs.mysql.com/42846)
* Failure to treat BIT values as unsigned could lead to unpredictable results. (Bug#42803: http://bugs.mysql.com/42803)
* Previously, InnoDB performed REPLACE INTO T SELECT ... FROM S WHERE ... by setting shared next-key locks on rows from S. Now InnoDB selects rows from from S with shared locks or as a consistent read, as for INSERT ... SELECT. This reduces lock contention between sessions. (Bug#37232: http://bugs.mysql.com/37232)
* When an InnoDB tablespace 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: http://bugs.mysql.com/31183)
* In mysql, using Control-C to kill the current query resulted in a ERROR 1053 (08S01): Server shutdown in progress" message if the query was waiting for a lock. (Bug#28141: http://bugs.mysql.com/28141)
|
|