On Intel x86 machines index selection by the MySQL query
optimizer could sometimes depend on the compiler version and
optimization flags used to build the server binary.
The problem was a result of a known issue with floating point
calculations on x86: since internal FPU precision (80 bit)
differs from precision used by programs (32-bit float or 64-bit
double), the result of calculating a complex expression may
depend on how FPU registers are allocated by the compiler and
whether intermediate values are spilled from FPU to memory. In
this particular case compiler versions and optimization flags
had an effect on cost calculation when choosing the best index
in best_access_path().
A possible solution to this problem which has already been
implemented in mysql-trunk is to limit FPU internal precision
to 64 bits. So the fix is a backport of the relevant code to
5.1 from mysql-trunk.
Wednesday, June 16, 2010
quick update from down under...
Posted by
sbester
at
09:53
0
comments
Friday, May 14, 2010
vmstat/iostat replacement for windows ?
I dislike the old perfmon interface and it's unreadable graphs and logs. For a long time I've been searching for a basic vmstat and/or iostat windows port, and one that doesn't rely on that nonsensical cygwin. If anybody knows of one, please leave a comment.
proc_q_len pagefile interrupt/s cswitch/s %cpu_user %cpu_sys %cpu_idle %disk_busy %disk_read %disk_write
10 2308780032 2016 2555 64 26 9 100 0 100
3 2308911104 2863 3669 62 13 23 100 1 100
0 2309206016 1857 3057 79 10 9 2 0 2
0 2310217728 2579 3664 64 9 26 100 0 100
1 2309140480 2195 2985 71 3 25 100 0 100
2 2309140480 2241 3042 76 4 18 100 0 100
- \System\Processor Queue Length
- \Process(_Total)\Page File Bytes
- \Processor(_Total)\Interrupts/sec
- \System\Context Switches/sec
- \Processor(_Total)\% User Time
- \Processor(_Total)\% Privileged Time
- \Processor(_Total)\% Idle Time
- \PhysicalDisk(_Total)\% Disk Time
- \PhysicalDisk(_Total)\% Disk Read Time
- \PhysicalDisk(_Total)\% Disk Write Time
Posted by
sbester
at
08:14
5
comments
Monday, May 3, 2010
Beware of RBR and tables without indexes
I always knew RBR and unindexed tables didn't play along very well, but never realized just how much you can distress a slave can in some cases.
Consider this statement (yeah yeah, i know :)
mysql> delete from t1 order by rand();Query OK, 78130 rows affected (2.61 sec)
---TRANSACTION 0 1799, ACTIVE 2390 sec, OS thread id 3672 fetching rows mysql tables in use 1, locked 1 153 lock struct(s), heap size 30704, 78281 row lock(s), undo log entries 35423Number of rows inserted 78130, updated 0, deleted 35423, read 1076560253 0.00 inserts/s, 0.00 updates/s, 17.58 deletes/s, 367099.91 reads/s
Over a billion row reads 40 minutes later and it's not even half done yet.For a large table this could take weeks or years to complete. It would be nice if there was a way to prevent this situation from happening.
Posted by
sbester
at
16:40
5
comments
Labels: rbr
Friday, February 12, 2010
debugging mysqld corefile on AIX
gunzip snapcore_555060.pax.Z
pax -r -f snapcore_555060.pax
bash-3.00# lslpp -l | grep bos.adt.debugbos.adt.debug 5.3.8.0 COMMITTED Base Application Development
Posted by
sbester
at
16:22
0
comments
Tuesday, December 1, 2009
a little challenge
How do you make mysqld write a DELETE to the binlog just by entering a SELECT statement ?
No triggers and no stored routines/functions are involved.
Posted by
sbester
at
20:20
0
comments