|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
EXAMPLE存储引擎是一个不做任何事情的存根引擎。它的目的是作为MySQL源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是对开发者。EXAMPLE存储引擎不支持编索引。一.甚么是freelists本文在于切磋Freelists和FreelistGroups的感化,存取机制,争用诊断和优化办法,同时经由过程实际和测试来颠覆一些存在了好久的毛病概念。本文的读者应当具有较深切的Oracle常识,关于一样平常的开辟职员这篇文章大概并没有太多的匡助。我们晓得Oracle数据库的读取单元是数据块(Block),而一个Block是不是同意被写进数据是基于必定的余暇度,这就是人人晓得的pctfree和pctused存储参数设置。假定pctfree=10,pctused=40,这就标明当一个Block的空间利用率到达了90%(100-pctfree)时,这个block就不再同意被用于新增数据(insert),而保存上去的这10%的空间则被预留为行更新(update)所大概必要的空间扩大,我们说此时这个block就从freelist上被摘走了(实践上另有别的一种情形,就是当块残剩空间不敷以拔出一笔记录而且该块的利用率已凌驾了pctused界说的值而且该块位于freelistheader处时,该块也会从freelist上被摘走,术语称为UNLINK)。当无数据删除(delete)的时分,只要该block中的数据被删除到必定的水平,该块才会从头被到场到freelists中,而这个水平就是pctused参数界说的数值,如我们这个例子中,只要块中的数据下降到40%以下的时分,该块才被从头同意用于新增数据。经由过程下面的形貌,能够晓得所谓freelists,就是一个指定了一切能够用于insert操纵的数据块的列表。存在在这个列表中的数据块才干用于insert操纵,一旦一个数据块没法用于insert(到达了pctfree参数指定的限制)则立即从这个列表中被摘除。freelists的感化就在于办理高水位标记(HWM)以下的余暇空间。注重:freelists只是办理高水位标记以下的余暇空间,而实践上一个segment可用的余暇空间包含两品种型:1.已分派给这个segment可是历来未被利用过的位于高水位标记之上的blocks2.位于高水位标记之下,被链接在freelists上的blocks至于freelistgroups的观点和感化,鄙人面的章节得当的中央会注释。我们分析上面的两个操作,都有一个“删除数据”的过程。 |
|