暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

20C 新特性 分片顾问模式分析工具

原创 由迪 2020-09-29
526

Sharding Advisor是一个独立的命令行工具,可以帮助您重新设计数据库架构,以便可以将现有的未分片的Oracle数据库有效地迁移到Oracle分片环境。分片顾问会分析您现有的数据库架构,并生成可能的分片数据库设计的排名列表。使用Sharding Advisor的建议,您可以更快,更顺利地迁移到Oracle Sharding。分片顾问分析为您提供所需的信息,以最大化可用性和可伸缩性,最大化查询工作负载性能,最小化每个分片上重复数据的数量。

使用Sharding Advisor数据库迁移工具

Sharding Advisor通过分析工作负载和数据库架构,并推荐最有效的Oracle Sharding配置,简化了将现有的非分片Oracle数据库迁移到分片数据库的过程。

跳到

  • 关于Sharding Advisor
    了解Sharding Advisor是什么,为什么需要它以及它如何工作。
  • 运行Sharding Advisor
    对现有的未分片的Oracle数据库运行Sharding Advisor命令行工具,以获得建议的Oracle Sharding配置。
  • 在非生产系统上运行Sharding Advisor
    为了最大程度地减少对实时生产系统的影响,您可以在与生产系统不同的服务器上的数据库模式和工作负载的副本上运行Sharding Advisor。
  • 查看Sharding Advisor输出
    Sharding Advisor为从查询工作负载中提取的每个潜在分片列发现表族,并根据查询分类规则和排名算法对表族进行排名。
  • 选择Sharding Advisor推荐的配置
    在决定为分片数据库选择哪种配置时,需要考虑数据库分片的某些方面。

父主题: 迁移到分片数据库

关于分片顾问

了解什么是Sharding Advisor,为什么需要它以及它如何工作。

Sharding Advisor分析为您提供了所需的信息

  • 最大化查询工作负载性能
  • 最小化需要交叉分片联接的多分片操作
  • 最大限度地提高复杂查询的并行度(将查询执行扩展到所有分片)
  • 最小化每个分片上的重复数据量

Sharding Advisor是一个客户端命令行工具,您可以在考虑将其迁移到Oracle Sharding环境的所有非分片生产版本10g或更高版本的Oracle数据库上运行。

Sharding Advisor作为独立工具安装,并使用经过身份验证的OCI连接连接到数据库。

为了了解您的架构和其他首选项,Sharding Advisor在交互式对话框中询问您一些问题。

然后,Sharding Advisor连接到现有的非分片数据库(也称为源),分析其架构和查询工作量,并为分片数据库生成一组替代设计,包括有关有效分片键的建议,要分片的表以及在所有分片上复制哪些表。

分片配置按查询性能进行排名,该排名偏向于配置,该配置可最大化不需要跨分片联接的单个和多分片查询,同时最小化需要跨分片联接的多分片查询。

您选择最适合您要求的设计。设计由顾问排名,因此,如果您没有特定的首选项,则可以默认选择排名最高的设计。

注意:

Sharding Advisor功能有一些限制:

源数据库必须是Oracle Database 10g或更高版本。

如果无法针对实时生产数据库运行Sharding Advisor,则可以在具有从生产数据库导入的架构和工作负载的其他服务器上运行Sharding Advisor。

Sharding Advisor根据主键-外键关系发现表族。如果架构没有任何主键-外键约束,PARENT则建议按子句分片。

当前,如果源数据库具有外键约束,则Sharding Advisor仅建议单表系列系统管理的分片(按引用分片)配置。否则,Sharding Advisor建议使用该PARENT子句进行分片。

运行分片顾问

针对现有的未分片的Oracle数据库运行Sharding Advisor命令行工具,以获取建议的Oracle Sharding配置。

从命令行运行Sharding Advisor,如下所示。

复制$ gwsadv -u username -p password -c –w sch=(schema1,schema2

其中-u-p是运行Sharding Advisor的用户的用户名和密码。

-c第一次对现有查询工作负载运行Sharding Advisor时,请使用Capture工作负载参数来从源GV$SQL_PLAN_STATISTICS_ALL 视图中捕获谓词信息。您无需-c在相同工作负载的后续查询中使用。

必需-w标志指示Sharding Advisor使用查询工作负载进行分片配置的生成和排名。

在这种情况下,该sch参数指定要运行Sharding Advisor的架构列表。您可以将Sharding Advisor与其他几个选项一起使用,在Sharding Advisor的用法和选项中进行了详细说明。

在非生产系统上运行Sharding Advisor

为了最大程度地减少对实时生产系统的影响,可以在与生产系统不同的服务器上的数据库模式和工作负载的副本上运行Sharding Advisor。

为了获得与实时生产系统相同的结果,可以使用Oracle Data Pump实用程序导出生产数据库架构和工作负载,并将其复制到其他服务器上。然后,您可以在导入的架构上运行Sharding Advisor。

您仅导出数据库模式和系统表。无需导出实际数据。

以下过程以HR模式为例。

在源(生产)数据库服务器上执行以下步骤。

  1. 使用数据泵导出导出模式。

    复制> expdp system/password SCHEMAS=HR DIRECTORY=HR_DIR CONTENT=METADATA_ONLY
     DUMPFILE=hr_metadata.dmp LOGFILE=hr_exp.lst
    
  2. 导出自动工作存储库(AWR)快照。

    复制SQL> @$ORACLE_HOME/rdbms/admin/awrextr.sql
    

在目标数据库服务器上执行以下步骤。

  1. 将转储文件从源复制到目标。

    例如,将转储文件复制到 /scratch/dump

  2. 创建一个可以在架构上运行Sharding Advisor的用户。

    复制SQL> CREATE USER hr IDENTIFIED BY password;
    
  3. 创建(或替换)数据泵导入可以引用的转储文件目录变量。

    复制SQL> CREATE DIRECTORY HR_DIR AS '/scratch/dump'
    
    SQL> REPLACE DIRECTORY  HR_DIR AS '/scratch/dump'
    
  4. 导入架构。

    复制> impdp system/password DIRECTORY=HR_DIR DUMPFILE=hr.dmp LOGFILE=imp.lst SCHEMAS=HR
    
  5. 加载AWR数据。

    复制SQL> @$ORACLE_HOME/rdbms/admin/awrload.sql
    
  6. 现在,您可以使用创建的用户在数据库的目标非生产副本上运行Sharding Advisor。

    复制> gwsadv –u hr –p password –c -awr_snap_begin begin_timestamp –awr_snap_end end_timestamp -w
    

查看分片顾问输出

Sharding Advisor为从查询工作负载中提取的每个潜在分片列发现表族,并根据查询分类规则和排名算法对表族进行排名。

要查看运行Sharding Advisor的用户拥有的分片配置和相关信息,可以查询以下输出数据库表,这些表存储在与源数据库相同的架构中。

  • SHARDINGADVISOR_CONFIGURATIONS 在排序的分片配置中,每个表都有一行,并提供了每个表的详细信息,例如是否分片或复制它,以及如果分片,则表示其在表族层次结构中的级别,其父表,根表分片键,外部关键参考约束,以及每个分片的估计大小。
  • SHARDINGADVISOR_CONFIGDETAILS每个排序的分片配置都有一行,并提供了每个排序的分片配置的详细信息,例如分片表的每个分片的数量和集合大小,以及重复表的数量和集合大小。它还根据源数据库的当前工作负载和估计成本,提供了生产中期望的单个分片和多分片查询的数量,以及需要交叉分片联接的多分片查询的数量。
  • SHARDINGADVISOR_QUERYTYPES,针对工作负载中的每个查询,列出每个分片配置的查询类型。请注意,根据分片配置,同一查询可以具有不同的查询类型。

由于Sharding Advisor输出包含在常规数据库表中,因此您可以对它们运行多种SQL查询,以便从不同角度查看输出。

例如,要按排名顺序显示分片配置,请运行

复制SELECT rank, tableName as tname, tabletype as type,
           tablelevel as tlevel, parent, shardby as shardBy,
           shardingorreferencecols as cols, unenforceableconstraints,
           sizeoftable  
FROM SHARDINGADVISOR_CONFIGURATIONS
ORDER BY rank, tlevel, tname, parent;

有关Sharding Advisor输出表和更多示例查询的详细信息,请参阅 Sharding Advisor输出表Sharding Advisor输出查看SQL示例

选择分片顾问推荐的配置

在决定为分片数据库选择哪种配置时,需要考虑数据库分片的某些方面。

分片数量的增加将导致分片数据库的可用性和可伸缩性更高。

最小化重复数据可能会与您希望最小化需要跨多个分片进行联接的多分片查询的需求发生冲突。由于分片数据库中的联接通常是对相关数据执行的,因此将相关数据存储在同一分片中可以极大地加快此类联接的执行速度。

就查询工作负载而言,建议的分片配置的总成本取决于工作负载中每个查询类型(单分片,多分片和具有交叉分片联接的多分片)的数量,其中多分片具有跨分片联接的查询的成本最高,而单分片查询的成本最低。成本信息在COST Sharding AdvisorSHARDINGADVISOR_CONFIGDETAILS输出表的列中。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论