对 VLDB 来说,表和索引等对象的分区(partition)能力无疑是非常重要的特性。分区实现的好坏关系到超大数据库的扩展能力。
同 Oracle 9i 数据库一样,10g 在分区上依旧是只有四种类型,分别是:范围(Range)分区、列表(List)分区、Hash 分区以及复合分区(包含 range-hash 和 range-list 这两种方式)。10g 中只是做了一些改进。在 10g 中,你可以在索引组织表中应用分区特性。此外,对分区上的索引功能进行了改进。
Yukon 现在的分区方式相比 Oracle 的来说要灵活一点。在新版本中,分区可以通过Transact-SQL(或者其他的.NET语言)中用户定义的函数来实现,通过以下三步来做到:
- 1.创建一个分区函数来指定表该如何使用该函数分区
- 2.创建一个分区模式来指定应用该分区函数的分区在文件组上的位置
- 3.创建一个表或者索引使用该分区模式
SQL Server 现在也提供非分区表到分区表的转换。其步骤是需要先创建一个伪分区表,然后和真实的分区表交换数据。如果删除分区内的数据,居然也要先创建一个伪分区表,然后和真实的分区表进行交换操作,这个稍嫌麻烦些。Oracle 则早已经实现了“分区交换”类似的功能。而且,从DBA的角度上来说,多分区内的数据操作更为灵活,删除分区数据只需要 TRUNCATE 相关分区即可。
BTW:欠下了不少笔债,也不知道什么时候能够写完。下周公司要写的文档也很多,不知道能写完不。老毛病又犯了。
MySQL 5.1 新增的分区(Partitioning)功能
旧的技术新闻:MySQL 在 5.1.3 发布的时候新增了分区(Partitioning)功能。 在 MySQL 5.1 的手册中已经可以看到相关的…