发信人: edison()
整理人: leitiger(2002-06-05 23:45:28), 站内信件
|
我发现我们版挺多刚刚从 foxpro 之类的开发工具转过来的。对这种 DBMS
的数据纪录存放顺序都有点迷惑。为此我帮大家理一理。
其他的 DBMS 我不清楚, SQL SERVER 的纪录存放顺序是这样的。首先 SQL
SERVER 中有一个簇索引(特殊的索引)的概念。所谓簇索引,只得是如果一个
表定义了一个簇索引,那么这个表中的纪录的存放顺序将按照簇索引字段的顺序
存放。显然,一个表只能定义一个簇索引。如果一个没有定义任何簇索引,那么
数据的存放顺序将按照数据的插入先后顺序存放。即使用户删除了以前的纪录,
新的纪录还是追加到表的末尾,这样就会使的表中逐渐出现许多空行。所以,为
表定义簇索引是非常有意义的,因为数据插入时就会插到相应的位置,不会出现
空行。但是这样也是有代价的,由于要按顺序存放数据,因此插入前首先要定位
,当然这个算法并不会占太多的资源。关键是数据要插入的位置如果没有空行,
那还要移动数据腾出空行,这个算法要花费大量资源。所以说簇索引有利也有弊
。大家应该根据不同的情况各自衡量是否应该建立簇索引。
至于 Sql Anywhere 没有簇索引一说,可能是内部实现不一样。他可能直接
将主码定义成簇索引,或者是第一个索引定义为簇索引。我想他怎么做的原因是 为了图简单。
因为,你想要实现自定义簇索引(也就说按用户设置的顺序存放数据),自
然技术上要难一点。所以 Sql Anywhere 就省了这一功能,而是改成由系统定义
数据的存放顺序。
而且我觉得这种用户自定义数据存放顺序的功能是很有意义的。这样对我们 来说灵活好多,我们可以根据不同的应用,适当的选择按那个字段存放
不过看完这篇文章,大家可千万不要把一般索引忘了,一般索引对提高性能
更加重要。
其实关于索引与簇索引的利弊还有很多,我只是肤浅的介绍了一下。
至于其他 DBMS 我想应该都差不多!
Good luck! -- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: bbs.szptt.net.cn]
发信人: ilike (自在飞花), 信区: Powerbuilder 标 题: Re: 数据纪录存放顺序一说 发信站: 网易虚拟社区 (Sat Nov 6 15:23:19 1999), 站内信件
你搞错了。 SQLServer不是这样的。 当有一数据页的记录完全被删除时,这一页会重复利用。 因此后插入的记录用不带order的select出来是在前面的。 你如果有所怀疑,可以建一个表,只有一个char(1000)的字段,然后插入100000 条记录,删除前90000条,再插入一条,然后你看看记录是在后面还是在前面。
如果这一页未被完全删除,那么到底是个怎样的算法,这就不知道了,总之应该 是一个在性能和空间利用中尽量取的平衡的算法。。 这些东西随时会在下一个版本中更改。
还是那句话,面象集合的数据库无记录前后之分。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.103.137.155]
发信人: edison (edison), 信区: Powerbuilder 标 题: Re: 数据纪录存放顺序一说 发信站: 网易 BBS (Sat Nov 6 16:38:33 1999), 站内信件
不会吧, 这样的吗? 在哪本书里说的, 然我看看!
-- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: bbs.szptt.net.cn]
发信人: ilike (自在飞花), 信区: Powerbuilder 标 题: Re: 数据纪录存放顺序一说 发信站: 网易虚拟社区 (Sat Nov 6 16:49:04 1999), 站内信件
没书,我亲手做试验证实这一点的。 我不信大型数据库的空间利用会象foxpro一样的没有效率。 数据库中有几个参数比如页充满率等等其实就和这个有关系。
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.156.11]
发信人: lei_tiger (雷老虎), 信区: Powerbuilder 标 题: Re: 数据纪录存放顺序一说 发信站: 网易虚拟社区 (Sat Nov 6 17:03:32 1999), 站内信件
【 在 ilike (自在飞花) 的大作中提到: 】 : .......
学过数据结构没有,簇索引是一个B树,规律嘛,就是B树的规律喽。
不用管它,关系数据库是基于关系模型,除了实体就是关系,都是集合,没有顺 序。
-- 我雷老虎以德服人。^-^ 我对MIS(尤其是商业MIS)开发和人工智能研究很有兴趣,欢迎交流! 给我来信:[email protected]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 207.34.202.2]
发信人: edison (edison), 信区: Powerbuilder 标 题: Re: 数据纪录存放顺序一说 发信站: 网易 BBS (Sat Nov 6 17:26:57 1999), 站内信件
OK, 不管他!
是, 管他什么顺不顺序的! 就这样!
【 在 lei_tiger (雷老虎) 的大作中提到: 】 : .......
-- 谢谢没有在 "将本文章寄一份给原作者" 处打勾, 再次感谢!
※ 来源:.网易 BBS bbs.netease.com.[FROM: bbs.szptt.net.cn]
发信人: flyingmist (飘雾), 信区: Powerbuilder 标 题: Re: 数据纪录存放顺序一说 发信站: 网易虚拟社区 (Sat Nov 6 18:49:45 1999), 站内信件
哈哈哈! 原来返璞归真是这个意思。
【 在 edison (edison) 的大作中提到: 】 : OK, 不管他! : 是, 管他什么顺不顺序的! 就这样!
flyingmist注:edison的性格真是可爱。 -- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.102.159.155]
|
|