摘要: 摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。文章主要内容分为三个部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。第三部分根据上面 阅读全文
posted @ 2012-04-12 17:16 刘军newhand_liu 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 一、引言对数据库索引的关注从未淡出我的们的讨论,那么数据库索引是什么样的?聚集索引与非聚集索引有什么不同?希望本文对各位同仁有一定的帮助。有不少存疑的地方,诚心希望各位不吝赐教指正,共同进步。[最近首页之争沸沸扬扬,也不知道这个放在这合适么,苦劳?功劳?……]二、B-Tree我们常见的数据库系统,其索引使用的数据结构多是B-Tree或者B+Tree。例如,MsSql使用的是B+Tree,Oracle及Sysbase使用的是B-Tree。所以在最开始,简单地介绍一下B-Tree。B-Tree不同于Binary Tree(二叉树,最多有两个子树),一棵M阶的B-Tree满足以下条件:1)每个结点至 阅读全文
posted @ 2012-04-12 17:14 刘军newhand_liu 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 名词解释:磁道:盘片上的同心圆环柱面:所有半径相同的同心圆环组成一个柱面扇区:磁道沿半径线划分成一个个小的段,每个段就叫做一个扇区寻道:移动磁头到目标磁道旋转:旋转磁盘,将目标扇区旋转到磁头下局部性原理:当一个数据被用到时,其附近的数据也通常会马上被使用页:页是计算机管理存储器的逻辑块,硬件及操作系统往往将主存和磁盘存储区分割为连续的大小相等的块,每个存储块称为一页(页的大小通常为4KB)磁盘预取:从目标位置开始,读取一定长度的数据放入内存(预读的长度一般为页的整数倍)磁盘目录:磁盘目录将数据的逻辑地址映射到相应的物理扇区地址磁盘I/O时间:数据传输时间+读取磁盘目录时间+寻道时间+旋转时间存 阅读全文
posted @ 2012-04-12 16:59 刘军newhand_liu 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 实际上,您可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。下面,我们举例来说明一下聚集索引和非聚集索引的区别:其实,我们的汉语字典的正文本身就是一个聚集索引。比如,我们要查“安”字,就会很自然地翻开字典的前几页,因为“安”的拼音是“an”,而按照拼音排序汉字的字典是以英文字母“a”开头并以“z”结尾的,那么“安”字就自然地排在字典的前部。如果您翻完了所有以“a”开头的部分仍然找不到这个字,那么就说明您的字典中没有这个字;同 阅读全文
posted @ 2012-04-12 15:19 刘军newhand_liu 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 记录想做的事情,专注于少数几件事情我正在做的SRTP:内存数据库记单词:每天一个listC++底层机制C语言编译原理操作系统windows核心编程计算机体系结构我想做的学习嵌入式学习STL学习c语言学习linux学习TCP/IP协议、网络编程学习linux内核学习ios开发学习计算机体系结构学习编译原理想看的书籍inside of C++ object modelC++ primerlinux/unix设计思想Effective C++算法导论 阅读全文
posted @ 2012-04-12 12:27 刘军newhand_liu 阅读(104) 评论(0) 推荐(0) 编辑