- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
mysql技术内 幕——表 amp;索引算法和锁
Mysql技术内幕——表amp;索引算法和锁
表
4.1、innodb存储引擎表类型
innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键。首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键。不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid()。
4.2、innodb逻辑存储结构
innodb的逻辑存储单元由大到小分别是 tablespace,segment,extent,page(block)组成
4.2.1、表空间(tablespace)
所有数据都是存放在表空间中的,启用了参数innodb_file_per_table,则每张表内的数据可以单独放到一个表空间中,每张表空间内存放的只是数据,索引和插入缓冲,其他类的数据,如undo信息,系统事务信息,二次写缓冲等还是存放在原来你的共享表空间。
4.2.2、段(segment)
常见的segment有数据段、索引段、回滚段。innodb是索引聚集表,所以数据就是索引,索引就是数据,那么数据段即是B+树的页节点(leaf node segment),索引段即为B+树的非索引节点(non-leaf node segment)。而且段的管理是由引擎本身完成的。
4.2.3、区(extend)
区是由64个连续的页主成,每个页大小为16K,即每个区的大小为(64*16K)=1MB,对于大的数据段,mysql每次最多可以申请4个区,以此保证数据的顺序性能。
4.2.4、页(page)
页是innodb磁盘管理最小的单位,innodb每个页的大小是16K,且不可更改。常见的类型有:数据页 B-tree Node;undo页 Undo Log Page;系统页 System Page;事务数据页 Transaction system Page;插入缓冲位图页 Insert Buffer Bitmap;插入缓冲空闲列表页 Insert Buffer freeBitmap;未压缩的二进制大对象页Uncompressed BLOB Page;压缩的二进制大对象页 Compressed BLOB Page。
4.2.5、行
innodb存储引擎是面向行的(row-oriented),也就是说数据的存放按行进行存放。每个页最多可以存放16K/2~200行,也就是7992个行。
4.3、innodb物理存储结构
innodb引擎由共享表空间,日志文件(redo log),表结构定义文件组成。
4.4、innodb行记录格式
mysql从5.1开始,innodb提供了compact和redundant(为了兼容以前版本)两种格式来存放行记录数据。
4.4.1、compact行记录格式
Compact行记录的设计目标是能高效存放数据。不管是char还是varchar类型,NULL指是不占用存储空间的。行记录中还包括两个隐藏列 事务ID列(6字节)和回滚指针列(7字节) 若没有定义的PrimaryKey 会增加一个6字节的RowID列。InnoDB在页内部是通过一种链表方式串联各个行记录的。
4.4.2、redundant行记录格式
Redundant行记录格式为了兼容以前版本。每个行最多有1023个列,因为列的数量占用了10位。对于varchar的NULL值,它不占用任何存储空间,而对于类型char的NULL值需要占用空间。
4.4.3、行溢出数据
innoDB存储引擎可以将一条记录中的某些数据存储在真正的数据页面之外,作为行溢出数据。VarN)中的N指的是字符的长度,官方手册中定义的65535长度是指所有VARCHAR列的长度总合。
数据一般都是存放在B-tree Node的页类型中,但是发生行溢出的时,存放行溢出的页类型为Uncompress BLOB Page。如果一个页中至少放入两行的数据,那varchar就不会存放到BLOB页中,阀值长度为8098。对于TEXT或者BLOB的数据类型,我们总是以为它们是放在Uncompressed BLOB Page中的,其实这也是不准确的,放在数据页还是BLOB页同样和前面讨论的VARCHAR一样。
4.4.4、compressed与dynamic记录格式
InnoDB Plugin引入了新的文件格式成为B
您可能关注的文档
- Landmarks(世界著名地标).ppt
- LAUNCHING YOUR STARTUP — Financing Your Venture —.ppt
- LAUNCHING YOUR STARTUP — Financing Your Venture —(三).ppt
- Launching Your Startup — Financing Your Venture(三).ppt
- Launching Your Startup — Financing Your Venture(二).ppt
- LEEP术治疗宫颈不典型增生疗效观察.doc
- L′ATTIVITà DI VENTURE CAPITAL.ppt
- linux发展历史.doc
- Linux探索之旅 第五部分第一课:Vim岂是池中物宝剑锋从磨砺出.doc
- lol亚索经典话语.doc
- mysql数据库二级考试 计算机二级mysql数据库模拟试题及答案汇总.doc
- mysql空间数据库 空间信息与空间数据库(答案).doc
- mpce实验装置三级液位系统建模与控制算法地研究.pdf
- Nasdaq Misjudged Its Japan Venture --- U(二).doc
- National Certificate in New Venture Creation(五).doc
- National Venture Capital Association(二).doc
- National Certificate in New Venture Creation(四).doc
- NBA乔丹经典语录.doc
- Navy Branch Health ClinicVA Joint Venture in Key West, Florida(一).ppt
- NEGOTIATING INTERNATIONAL JOINT VENTURE(二).doc
文档评论(0)