Bug #52111 | 32-bit wraparound on buf_pool->ulint_clock causes high read ahead random | ||
---|---|---|---|
Submitted: | 16 Mar 2010 18:47 | Modified: | 2 Apr 2010 7:54 |
Reporter: | Harrison Fisk | Email Updates: | |
Status: | Won't fix | Impact on me: | |
Category: | MySQL Server: InnoDB storage engine | Severity: | S3 (Non-critical) |
Version: | 5.0,5.1 built-in | OS: | Any |
Assigned to: | Marko Mäkelä | CPU Architecture: | Any |
Tags: | innodb, read ahead, read ahead random, ulint_clock |
[16 Mar 2010 18:47]
Harrison Fisk
[16 Mar 2010 19:03]
Harrison Fisk
To summarize the symptoms of this bug: 1. Requires 32-bit server 2. Requires a month or so of uptime with a busy server 3. Requires a particular query pattern 4. I/O increases dramatically for ~30 seconds to 1 minute
[18 Mar 2010 14:12]
Marko Mäkelä
In the InnoDB Plugin 1.0, the buffer-pool wide ulint_clock has been replaced with block-wide 32-bit access_time that holds ut_time_ms(). There is minimal risk of overflow, and the impact of it would be very low: a n*49-days-old block could be mistaken for less than innodb_old_blocks_time old. Side note: the access_time has to be compared with 32-bit arithmetics, because the field in buf_page_t is 32 bits. That was not the case until this morning, and thus the "index scan resistance" on 64-bit platforms did not work quite as intended.