来说几句吧,支持一下飞虎兄:其实分区的用处在于呢,当你的库有一个特大的表时,而的访问又特不集中,或者你苦于这个表的查询速度时,这时你就对这个表进行分区了。1、相对于普通表来说,cpu不会带来查询速度的提高,不过你可以在做select等操作时使用"parallel" HINT,来使多cpu共同作业。
2、简明一点说,数据库其实影响性能的最主要的问题就是io的问题,无论的调内存,使用索引,想解决的归根结底也都是减少io,分区表相对于普通表,最大的优点是每个分区都相当于一个变通表,每个分区都可以建在自己的表空间上,而每个表空间呢又可以选择建在哪个盘上,这样就把io均分开,当你进行查询就加快了读写速度。
3、你所说的几种方法,我认为B与C更可取,A我并不测试过,不过自我感觉可能会有问题,要想更好的发挥分区的功能,我认为C方法更可取一些。
其实建分区最关键的问题是你按什么分区,也就是分区键的设计问题,设计分区键时,一定要使每个分区的数据尽量均匀分布,这样可以提高速度,避免io冲突和热点。
2、简明一点说,数据库其实影响性能的最主要的问题就是io的问题,无论的调内存,使用索引,想解决的归根结底也都是减少io,分区表相对于普通表,最大的优点是每个分区都相当于一个变通表,每个分区都可以建在自己的表空间上,而每个表空间呢又可以选择建在哪个盘上,这样就把io均分开,当你进行查询就加快了读写速度。
3、你所说的几种方法,我认为B与C更可取,A我并不测试过,不过自我感觉可能会有问题,要想更好的发挥分区的功能,我认为C方法更可取一些。
其实建分区最关键的问题是你按什么分区,也就是分区键的设计问题,设计分区键时,一定要使每个分区的数据尽量均匀分布,这样可以提高速度,避免io冲突和热点。
每个分区都可以建在自己的表空间上,这一点根本上已解决同一时间访问一个焦点说法,也就是增大访问量同一地方,而每一空间可设置数据文件的不同物理路径(这样只是机器性能问题),对于大型表查询速度绝对有好处.
The Oracle server can explicitly recognize partitions and subpartitions. Oracle uses this knowledge to optimize SQL statements by pruning unnecessary partitions or subpartitions. For example, if a query only involves Q1 sales data, there is no need to retrieve data for the remaining three quarters. Such intelligent pruning can dramatically reduce the data volume, resulting in substantial improvements in query performance.
If the optimizer determines that the selection criteria used for pruning are satisfied by all the rows in the accessed partition or subpartition, it removes those criteria from the predicate list (WHERE clause) during evaluation in order to improve performance
这是文档里面的一段话。服务器可以清楚辨别分区,查询的时候仅限于这个分区。 实际应用中,RAID技术可以均衡I/O, 分区表还是可以提高性能。
(因为ORACLE不用去SCAN其他的分区.
另外觉得使用分区关键还是看应用,如何进行设计,怎么分区,索引如何创建?
不知有没有谁有实际应用方面的经验,一起分享?
看了需求,大家可能都知道,用分表实现比较困难(因为统一结帐的时候,会忽略部门信息)。
只有用分区了,分了14个区(有一个是结算中心的区)。每个分区有local index,大表有全局索引。把每个分区授权给分公司用户。
分公司性能不错。结算中心有一小部分查询的时候,比较慢,这是没有办法的,一个是结算逻辑复杂,一个特别大的SQL,程序只有一份,不可能专门针对这个部分来重写SQL
但是他们也还满意。
写这么多,我不知道说清楚没有。唉,我的文笔!差!
oracle8.0.3(beta) 只在Enterprise Version中有效
如果你查询的条件是分区字段,oracle仅仅需要在一个分区寻找数据时,速度会有很大提高,如果按照其他条件检索,速度不会有什么改善。
分区表的数据量都比较大,如果有可能,在创建表的时候可以采用nologging
然后用 append的方法装载数据,速度会快很多