从顺序随机I O原理来议论MYSQL MRR NLJ BNL BKA
发布时间:2022-03-21 14:54:34 所属栏目:MySql教程 来源:互联网
导读:本文只讨论innodb存储引擎,并且有部分观点为作者观点,如果有误请指出。 一、机械磁盘原理 机械盘由动臂,盘片,读写磁头,主轴组成,磁头是固定不能动的,要读取相应的扇区只能通过盘片的 旋转。 每一个盘片为双面,每一个面上分布有同心圆的磁道,磁道又
本文只讨论innodb存储引擎,并且有部分观点为作者观点,如果有误请指出。 一、机械磁盘原理 机械盘由动臂,盘片,读写磁头,主轴组成,磁头是固定不能动的,要读取相应的扇区只能通过盘片的 旋转。 每一个盘片为双面,每一个面上分布有同心圆的磁道,磁道又分为扇区一般为512 BYTES,现代的磁盘 一般外边缘磁道的扇区多,内磁道的扇区少,那么一般读写外边缘磁道的速度更快,因为转速为定值。 同时各个不同盘片上半径下同的磁道组成了一个柱面。 下图是一个典型的磁盘组织(摘取数据结构(C语言版)) 从顺序随机I/O原理来讨论MYSQL MRR NLJ BNL BKA 二、随机I/O和顺序I/O模拟 模拟使用C语言调用LINUX API完成,主要方式如下: 读取一个大文件程序中限制为900M,而程序顺序和随机读取20000个4096大小的数据,并且CPY到其他文件中, cpy的文件为81920000字节 为了将写操作的影响降低,而将读操作的影响放大,分别使用 O_CREAT | O_WRONLY |O_EXCL 打开写文件,启用OS BUFFER,write操作写到OS kernel buffer则结束,同时不能开启 O_SYNC,开始O_SYNC每一次wirte会调用fsync(),将写的影响将会放大。 当然这个程序有一点补足,我应该使用排序算法将随机数组中的数据排序后在进行读取,而不是取一个连续的数组。 这样更能说明问题,但这也不重要因为随机读已经慢得离谱了。下面是我程序跑出的结果。 ./a.out p10404530_112030_Linux-x86-64_1of7.zip fisrt sca array: 134709 fisrt sca array: 198155 fisrt sca array: 25305 fisrt sca array: 46515 fisrt sca array: 91550 fisrt sca array: 137262 fisrt sca array: 46134 fisrt sca array: 10208 fisrt sca array: 142115 ...... sequential cpy begin Time: Fri Dec 2 01:36:55 2016 begin cpy use sequential read buffer is 4k: per 25 % ,Time:Fri Dec 2 01:36:56 2016 per 50 % ,Time:Fri Dec 2 01:36:57 2016 per 75 % ,Time:Fri Dec 2 01:36:57 2016 per 100 % ,Time:Fri Dec 2 01:36:58 2016 scattered cpy begin Time: Fri Dec 2 01:36:58 2016 begin cpy use scattered read read buffer is 4k: per 25 % ,Time:Fri Dec 2 01:37:51 2016 per 50 % ,Time:Fri Dec 2 01:38:40 2016 per 75 % ,Time:Fri Dec 2 01:39:29 2016 per 100 % ,Time:Fri Dec 2 01:40:20 2016 ---随机 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 107.14 0.00 428.57 0.00 8.00 1.01 9.49 9.42 100.92 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 104.17 1.04 416.67 0.52 7.93 1.04 9.79 9.81 103.23 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 0.00 0.00 104.12 2.06 465.98 32.99 9.40 1.17 11.02 9.68 102.78 这里明显看出了问题,程序放到最后给出。 (编辑:好传媒网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐
热点阅读