数据库分区技术(数据表数据量太多导致服务速度慢 ,如何优化数据库性能)

文章来源:

http://baike.baidu.com/link?url=M_wdTsWIjv2gQisL3UKNG2nFWlvN55_PGPCzGjdF7eTS_71vvJNvJ0cjACTBCi11dwOqNn7E2UfTPkVEugyv-q

数据库分区的优势:

性能的提升(Increased performance)

在扫描操作中,如果MySQL的优化器知道哪个分区中才包含特定查询中需要的数据,它就能直接去扫描那些分区的数据,而不用浪费很多时间扫描不需要的地方了。需要举个例子?好啊,百万行的表划分为10个分区,每个分区就包含十万行数据,那么查询分区需要的时间仅仅是 全表扫描的十分之一了,很明显的对比。同时对十万行的表建立索引的速度也会比百万行的快得多得多。如果你能把这些分区建立在不同的磁盘上,这时候的I/O读写速度就“不堪设想”(没用错词,真的太快了,理论上100倍的速度提升啊,这是多么快的响应速度啊,所以有点不堪设想了)了。

对数据管理的简化

分区技术可以让DBA对数据的管理能力提升。通过优良的分区,DBA可以简化特定数据操作的执行方式。例如:DBA在对某些分区的内容进行删除的同时能保证余下的分区的 数据完整性(这是跟对表的数据删除这种大动作做比较的)。
此外分区是由MySQL系统直接管理的,DBA不需要手工的去划分和维护。例如:这个例如没意思,不讲了,如果你是DBA,只要你划分了分区,以后你就不用管了就是了。
 
 
实例:
问:sql server 2005数据库  数据表数据量太多导致服务速度慢  应该怎么样优化 如果建立表分区 应该怎样建立
答:对SQL Server数据表进行分区的过程分为三个步骤:

  1)建立分区函数

  2)建立分区方案

  3)对表格进行分区

  第一个步骤:建立分区函数

  分区函数定义[u]how[/u],即你想要SQL Server如何对数据进行分区。这里就不以某一个表格作为例子,而是总体概括分割数据的技术。

  分区是通过指定每个分区的分割界线实现的。例如,假定我们有一个Customers表格,里面包含了企业所有的客户的信息,客户信息以唯一的客户号进行辨识,客户号从1到1000000。我们可以运用以下的分区函数(这里称之为customer_Partfunc)把这个表格平均分为四个分区:

  CREATE PARTITION FUNCTION customer_partfunc (int) 
  AS RANGE RIGHT 
  FOR VALUES (250000, 500000, 750000) 

  这些分割界线指定了四个分区。第一个分区包含所有值小于250000的记录。第二个分区包含所有值在250000和499999之间的记录。而第三个分区包含所有值在500000和749999之间的记录。其他所有大于或等于750000的记录都包含在第四个分区里。

  注意这个例子中使用了“RANGE RIGHT”从句。这说明分界值是在分区的右边。同样,如果使用的是“RANGE LEFT”从句,那么第一个分区就会包含所有值小于或等于250000的记录;第二个分区就会包含所有值在250001和500000之间的记录,如此类推。

  第二个步骤:建立分区方案

  一旦建立完定义如何对数据进行分区的分区函数之后,下一步就是建立一个分区方案,定义[u]where[/u],即你想在哪里对数据进行分区。这是一个很直接明了的过程,例如,如果我有四个文件组,名称分别从“fg1”到“fg4”,那么就可以使用以下分区方案:

  CREATE PARTITION SCHEME customer_partscheme 
  AS PARTITION customer_partfunc 
  TO (fg1, fg2, fg3, fg4) 

  注意我们现在把一个分区函数连接到了分区方案,但是我们还没有把分区方案连接到任何具体的数据库表格。这就是重复使用功能发挥功能的时候。我们可以通过这个功能把分区方案(或者只是分区函数)用于数据库表格的任何数据上。

  第三个步骤:对表格进行分区

  建立好分区方案之后,就可以开始对表格进行分区了。这是最简单的一个步骤,只需要在表格创建语句中添加“ON”从句,指定表格分区方案和要应用该分区方案的表列。你不需要指定分区函数,因为分区方案已经定义了分区函数。

  举个例子,假设你想要用上述的分区方案来创建一个客户表格,你需要使用以下Transact-SQL语句:

  CREATE TABLE customers (FirstName nvarchar(40), LastName nvarchar(40), CustomerNumber int) 
  ON customer_partscheme (CustomerNumber)

你可能感兴趣的:(数据库分区技术(数据表数据量太多导致服务速度慢 ,如何优化数据库性能))