MySQL数据文件高水位线扫描
当Mysql表(innodb单表单文件)中数据被删除以后,文件大小不会被收缩,但是
在做全表扫描时,对于没有数据的页是不会被扫描的,这一点和oracle的行为不一样
oracle只要对高水位线以下的块全部会扫描,而不管这些块里面是否有记录.
比如新建表tx1,数据大小如下
[iyunv@localhost db1]# ls -l tx*
-rw-rw---- 1 mysql mysql 8614 Mar 25 09:56 tx1.frm
-rw-rw---- 1 mysql mysql 11534336 Mar 25 09:56 tx1.ibd
找出当前连接线程的handle
Trx id counter 14660898
Purge done for trx's n:o < 14659359 undo n:o < 0 state: running but idle
History list length 402
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 3, OS thread handle 0x4d40e940, query id 29 localhost root init
show engine innodb status
通过pstack当前线程的线程号
[iyunv@localhost db1]# pstack 19611 | grep 0x4d40e940
Thread 2 (Thread 0x4d40e940 (LWP 19825)):
使用strace跟踪这个线程