摘要: 摘要本文以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) 编辑
摘要: 一、预备知识—程序的内存分配一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack)—由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。2、堆区(heap)—一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。-程序结束后由系统释放。4、文字常量区—常量字符串就是放在这里的。程序结束后由系统释放 阅读全文
posted @ 2012-03-30 17:09 刘军newhand_liu 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 本文为转载文章,原文地址:http://blog.csdn.net/jingxuewang110/article/details/6789557感谢原作者。1.new、delete、malloc、free关系delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库 阅读全文
posted @ 2012-03-30 17:07 刘军newhand_liu 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 问题叙述:4-6 VLSI芯片测试 Diogenes教授有n个被认为是完全相同的VLSI芯片,原则上它们是可以互相测试的。教授的测试装置一次可测二片,当该装置中放有两片芯片时,每一片就对另一片作测试并报告其好坏。一个好的芯片总是能够报告另一片的好坏,但一个坏的芯片的结果是不可靠的。这样,每次测试的四种可能结果如下: A芯片报告 B芯片报告 结论 B是好的 A是好的 都是好的,或都是坏的 B是好的 A是坏的 至少一片是坏的 B是坏的 A是好的 至少一片是坏的... 阅读全文
posted @ 2012-03-30 15:41 刘军newhand_liu 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 运算符优先级:域名解析符最高;然后是前置增量符/前置减量符/括号/数组下标/指针访问符;单目运算符比双目运算符高;算术双目比其它双目高;位运算高于关系运算;关系运算高于按位运算(&, |, ^);按位运算高于逻辑运算;三目的只有一个条件运算(?:),低于逻辑运算赋值运算仅比 , (顺序运算)高PrecedenceOperatorDescriptionAssociativity1::Scope resolutionLeft-to-right2++--Suffix/postfix increment and decrement()Function call[]Array subscript 阅读全文
posted @ 2012-03-21 18:42 刘军newhand_liu 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 声明:题目来自网络,答案大部分来自网络并经过整理;有些是自己查资料和请教他人得来的。1.两个人A,B。数字为2-100之间的自然数。现找出两个数,把其和告诉A,把其积告 诉B。然后问A知道不知道是哪两个数,A说:“虽然我不知道,但是肯定B也不知道。” 再问B,B说:“本来我不知道,但是听到A说这句话,现在我知道了。”,A听到B说他 知道了,然后就说:“现在我也知道了”。那么这两个数是多少呢?符号假设:A:a+b=s B:a*b=m 1.A说:“虽然我不知道,但是肯定B也不知道。” A不知道,可推出s有两个以上的和分解,如6=2+4=3+3; A肯定B不知道,可推出m有两个以上的积分解,即... 阅读全文
posted @ 2012-03-21 15:33 刘军newhand_liu 阅读(162) 评论(0) 推荐(0) 编辑