摘要: 一,全表扫描全表扫描是从读取数据的同时通过where条件中的查询条件来过滤来筛选出满足条件的数据执行过程。其扫描的的对象是表中的所有数据块,包括空数据库,如果表中的数据大量被删除,那么就会存在大量的空数据块,再次状态下,大量的空数据块也被扫描。在执行全表扫描时,按照顺序每次将多个数据块从磁盘读取到内存中。在通常情况下,由于数据块在磁盘的位置都是相互连接的,利用一次读取多个数据块的方法,不仅可以提高数据的读取效率,而且可以降低运输成本(把一个数据块读取到内存中所需要的成本)。我们知道,对于数据量较小的表,全表扫描与索引扫描的损益分界点为15%,对于数据量比较大的数据表而言,损益分界点可能小于5% 阅读全文
posted @ 2012-12-03 23:21 yangqing_fly 阅读(1595) 评论(0) 推荐(0)
摘要: 基于某个列所创建的新索引并不是只会影响某个特定的查询语句,而是将影响到所有使用到该列的查询语句。在索引构建中,我们追求的不是多而是精。就像通过革新可以为组织注入新的活力一样,在RDBMS中,通过索引的革新往往就可以获得惊人的执行速度。茫然推测或者为了特定要求而随意创建索引的行为应当被坚决禁止。通过实事求是的原则,对实际信息【搜集的数据读取类型,读取频度,查询范围,离散度,表的大小等】全面分析来构建综合性的战略性索引才是成功之道。1.索引的选定准则—— 不同类型表的索引应用准则1.1拥有数据量较小的小型表如果从单一的小型表中读取数据,那么索引的有无不会对执行速度有任何关系。但是在该小型表以不同方 阅读全文
posted @ 2012-11-13 17:23 yangqing_fly 阅读(1375) 评论(0) 推荐(1)
摘要: 1 机械硬盘性能测试1.1 顺序读取性能测试图1.1 机械硬盘顺序读取测试以上为机械硬盘顺序读情况下的性能测试,测试显示平均读取速度能达到84.0MB/s。1.2 顺序写入性能测试图1.2机械硬盘顺序写入测试以上为机械硬盘顺序写情况下的性能测试,测试显示平均写入速度能达到79.0MB/s。1.3 随机读取性能测试图1.3机械硬盘随机读取测试以上为机械硬盘在随机读取情况下的性能测试。测试显示在数据块为512字节时平均读取速度仅为0.033MB/s,数据块大小为4KB时,读取速度仅为0.226MB/s。1.4 随机写入性能测试图1.4机械硬盘随机写入测试以上为机械硬盘在随机写入情况下的性能测试。测 阅读全文
posted @ 2012-11-13 09:23 yangqing_fly 阅读(9820) 评论(0) 推荐(0)
摘要: 在MySQL中,索引属于存储引擎级别的概念,不同存储引擎对索引的实现方式是不同的,本文主要讨论MyISAM和InnoDB两个存储引擎的索引实现方式。MyISAM索引实现MyISAM引擎使用B+Tree作为索引结构,叶节点的data域存放的是数据记录的地址。下图是MyISAM索引的原理图:图8这里设表一共有三列,假设我们以Col1为主键,则图8是一个MyISAM表的主索引(Primary key)示意。可以看出MyISAM的索引文件仅仅保存数据记录的地址。在MyISAM中,主索引和辅助索引(Secondary key)在结构上没有任何区别,只是主索引要求key是唯一的,而辅助索引的key可以重复 阅读全文
posted @ 2012-10-26 13:03 yangqing_fly 阅读(367) 评论(0) 推荐(0)
摘要: MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算法当然是顺序查找(linear search),这种复杂度为O(n)的算法在数据量很大时显然是糟糕的,好在计算机科学的发展提供了很多更优秀的查找算法,例如二分查找(binary search)、二叉树查找(binary tree search)等。如果稍微分析一下会发现,每种查找算法都只能应用于特定的数据结构之 阅读全文
posted @ 2012-10-26 12:52 yangqing_fly 阅读(546) 评论(0) 推荐(0)