在多个硬盘上分发表格

当我通过不同的硬盘驱动器分发数据库表时,是否有性能改进?

我需要同时访问许多不同的模式,我想知道,如果在不同硬盘上分配表时,添加更多硬盘是否会显着提高性能。

假设我有100张桌子,1张硬盘100张桌子和10张硬盘 。 这会有所作为吗? 或者我最好在RAIDconfiguration中链接硬盘驱动器?

更多的硬盘驱动器通常会增加理论IO性能。 方法上由什么有用的数量差别很大。 在许多现实世界的应用程序(以及较less数量的磁盘)中,IO性能的增长甚至不是线性的。

更多磁盘不能提高性能的情况例如是达到(RAID)控制器的限制的情况。 在较旧的或便宜的(RAID)控制器上的10个高端SSD通常会导致控制器成为限制因素,而不是磁盘。 RAID级别至less在提供数据保护方面与性能相关。
RAID 1(镜像)中的2个磁盘给您零写额外的写入性能,但是在一个好的控制器上仍然会使读取性能提高一倍。

手动将(虚拟)磁盘分配给某些任务为这些任务提供了有保证的IOpath,从而允许这些任务的某种级别的并发性,例如数据库pipe理员喜欢做的事情。 当然,这也限制了每个任务的高峰performance。 而任何(手动)调整,错误可以大大妨碍性能:)

单个企业15k SAS旋转磁盘通常提供约200-250 IOPS(IO操作每秒)。 简单地说,10个磁盘将提供十倍。

如果在你的例子中,主要使用了一个表,那么将该表分配给1个磁盘,并将其他99个表分配给其他剩余的磁盘没有可衡量的好处,实际上你仍然将被限制在大约200 IOPS。 在这种情况下,在单个RAID 10卷上拥有全部100个表的情况下,您将拥有全部10个磁盘,因此读取操作的IOPS为2000+,IOPS为1000(有效的资源为镜像的一半,磁盘为5个)行动…大幅增加。

增加I / O吞吐量几乎总会提高性能。 但是,对于一定数量的表或数据库应该使用多less硬盘没有神奇的公式。 需要考虑的因素太多:数据大小,模式devise,写入或读取重量,查询次数等

除了添加额外的硬件,它总是有助于分析您的表结构和对数据库运行的最常见的查询。 有时候只是为通常要求的数据添加一个索引就会产生奇迹,甚至不会抛出更多的硬件。

除了增加物理磁盘的数量外,还需要修改Oracle来运行更多的并行进程。 我这样做:

NAME CURRENT_MEMORY_VALUE ------------------------------ --------------------- parallel_max_servers 32 parallel_min_servers 8 parallel_servers_target 32 parallel_threads_per_cpu 4 

进行这些更改的命令是:

 alter system set PARALLEL_MIN_SERVERS=8 scope=memory; <== RAC alter system set PARALLEL_MIN_SERVERS=8 scope=spfile sid='*'; <== RAC alter system set PARALLEL_MAX_SERVERS=32 scope=memory; <== RAC alter system set PARALLEL_MAX_SERVERS=32 scope=spfile sid='*'; <== RAC alter system set PARALLEL_SERVERS_TARGET=32 scope=memory; <== RAC alter system set PARALLEL_SERVERS_TARGET=32 scope=spfile sid='*'; <== RAC alter system set PARALLEL_THREADS_PER_CPU=4 scope=memory; <== RAC alter system set PARALLEL_THREADS_PER_CPU=4 scope=spfile sid='*'; <== RAC alter system set PARALLEL_MIN_SERVERS=8 scope=both; <== NON RAC alter system set PARALLEL_MAX_SERVERS=32 scope=both; <== NON RAC alter system set PARALLEL_SERVERS_TARGET=32 scope=both; <== NON RAC alter system set PARALLEL_THREADS_PER_CPU=4 scope=both; <== NON RAC