|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
MySQL这个名字是怎么来的已经不清楚了。基本指南和大量的库和工具带有前缀“my”已经有10年以上,而且不管怎样,MySQLAB创始人之一的的女儿也叫My。参考|参考手册|中文InnoDB中文参考手册---犬犬(心帆)翻译10multiversioning的完成
由于InnoDB是一个multiversioned数据库体系,它必需在表空间内保留纪录行的先期版本信息。这个信息被存储在被称为回滚段(rollbacksegment)的数据布局中,这与Oracle类似。
InnoDB在外部处置时在数据库中为每行纪录增加两个字段。一个6-byte字段形貌最初一个拔出或更新该行的事件的标识符。一样被删除纪录在外部处置上为更新该行的某一标记位,该标记位用于纪录它已被删除。每行纪录一样包括着一个名为滚指针(rollpointer)的7-byte字段。这个指针指向一个在回滚段中存储的取消日记纪录(undologrecord)。假如该行被更新过,那末取消日记纪录中包括需要的信息来重修它被更新前的内容。
InnoDB必要经由过程一个事件的回滚来完成利用回滚段中的信息实行打消操纵。它也用于为一个consistentread来重修一个纪录行的初期版本。
在回滚段中的打消日记被分为拔出和更新打消日记。拔出打消日记(Insertundologs)仅仅只在事件回滚时必要,它能够在事件一提交就被丢弃。更新打消日记(Updateundologs)一样也在consistentreads中利用,它们将在以后没有事件时被丢弃。InnoDB指派了一个数据快照,而consistentread必要更新打消日记中的信息来重修一个数据库行的初期版本。
必需纪录有纪律地提交你的事件,一样的这些事件只收回了consistentreads。不然InnoDB不克不及够从更新打消日记中丢弃数据,则回滚段大概会增添地太年夜而填满了全部表空间。
回滚段中的打消日记纪录的物理尺寸一般比它们绝对应的拔出或更新的纪录要小些。你能够经由过程进修这些信息预算出回滚段所需的空间。
在multiversioning的计划中,以一条SQL语句删除一个纪录行时,该纪录其实不会当即从数据库中移除。只在当InnoDB丢弃删除的更新打消日记纪录时,它才会从数据库中物理地移除响应的纪录行和它的索引。这个移除操纵被称为purge,它长短常快的,一般以与实行删除的SQL语句不异的工夫按次实行。
BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继 |
|