NineData 《使用数据库规范保障生产环境稳定与安全》

如何获得讲师PPT:

扫码关注公众号,后台回复Q101即可获得讲师PPT哟~

还能一键订阅后续精彩活动内容~

走出故障迷局的三重奏:逃生、复盘和推演

Q&A环节答疑:

1、安全规范的定义是否可以根据不同企业的具体需求进行定制化?如果可以,定制的过程是怎样的,比如涉及的权限、设置这些。

我们的系统全面支持这一功能。我们会在每个组织内预设一些规范,用户可以根据自身需求从中复制并创建自定义规范,进行灵活配置。例如,用户可以依据实际情况配置select多表功能,决定使用哪些表进行交易。此外,用户还可以配置不同环境或数据源绑定的规范,并可选择开启或关闭特定规范。这些强大的配置功能均由系统提供。 通常,这些配置任务由企业内部的DBA或管理员负责。研发人员则只能查看规范内容,了解企业内部对规范的要求。而关于规范的开启或关闭,这通常需要由管理员或DV来掌握。这是关于这一功能的首个疑问。

 

2、性能会有影响吗?怎么确保SQL审核机制的性能优化是有效的?有没有性能测试或基准测试来保证?

关于审核机制的性能优化,我理解您可能关注两个方面:一是对于在线数据库的业务circle优化是否有效;二是C库规范审核引擎的性能优化措施。
首先,关于在线数据库的业务circle优化,我们的性能优化是基于CBO(Cost-Based Optimizer)机制进行的。与传统的基于规则的索引推荐不同,CBO会根据数据库的数据分布进行推荐。我们会通过采样机制,动态获取数据库的真实数据分布信息。如果数据库的统计信息准确,我们会直接利用;如果统计信息滞后或不准确,我们会依赖采样机制来确保推荐索引的有效性。这样,我们就能确保推荐的索引是基于真实数据分布的,从而提高性能。
其次,关于C库规范审核引擎的性能优化,我们主要进行了缓存优化。这包括表信息缓存、原数据缓存以及审核结果缓存。对于涉及同一张表的多条SQL,我们可以对表信息进行缓存;对于同类circle,如果它们的签名或模板相同,那么它们的审核结果也可能相同,因此我们可以对审核结果进行缓存。这些缓存措施能有效提高审核性能。

3、SQL审核过程中,是如何识别出潜在的性能问题或安全风险的?

刚才我们讨论了无论是在平台上执行查询类circle还是变更类circle,都是通过我们的安全规范来识别潜在风险。对于查询类circle,我们能够识别是否使用了索引,以及是否有效地利用了索引。我们有一系列具体的规范来进行审核,尽管今天时间有限,未能详尽列出所有规范,但这样的能力我们确实具备。 对于结构变更的circle,如果涉及到锁表操作,我们会提示该circle可能无法使用mysql online执行,而需要采用我们的data online来进行结构变更。性能风险方面,如果能够获取到涉及的原数据信息,我们就可以分析数据库表结构,预测SQL上线后是否可能不走索引或没有可用索引,并据此给出提示或推荐。 总之,我们的系统会全面分析circle的潜在风险,并为用户提供相应的优化建议,以确保circle的安全和性能。

4、请问,大批量的数据变更,是否考虑了分批处理和负载均衡?

关于online DML,其核心是将一个circle拆分为多个circle,每条SQL仅影响一定数量的数据,具体数量由用户决定。我们实现了负载均衡的分批处理能力,确保每批次处理的数据量固定,例如1000条,避免出现批次间数据空洞的情况。当用户提到的数据分布存在空洞,如ID从123突然跳到一万零一万02,我们的分批算法也会进行技术处理,保证每个批次都是固定的数据量。对于大表的变更,无论是update、delete还是其他操作,我们都采用了分批处理的方式,以确保变更的平稳进行。所以,无论是数据的均匀分布还是空洞处理,我们都已经做了相应的技术优化。

5、有没有机制来预防或延迟高峰期执行的 DDL 操作? 

在高峰期DDL处理方面,我们提供了一套规范配置。首先,客户需要定义业务的高峰期时间段。一旦此规范启用,任何在高峰期提交的DDL请求都将被我们系统拦截。其次,即使在低峰期开始的DDL操作,如果执行时间超出了预配置的安全执行窗口,进入高峰期,我们会立即终止该任务,以避免对线上业务造成影响。 为了进一步优化高峰期DDL的处理,我们还提供了online DDL和延迟切表的功能。online DDL允许在不影响业务的情况下进行表结构的变更。而延迟切表时间功能则允许用户配置切表操作在低峰期执行,以减少对业务的影响。 通过这些机制,我们旨在预防和减少高峰期DDL操作对业务的影响。

6、有没有机制避免长时间锁定资源导致的死锁或性能瓶颈?

我们的平台实施了并发资源控制,以防止多个地点同时对同一个数据源进行变更,从而避免可能引发的稳定性问题。若发生此类情况,我们会限制重试次数。如果某个DDL任务在超过一定次数或时间后仍未完成,该任务将直接失败并报错。同时,我们会向DBA或研发人员发送告警提示,说明他们的任务因等待其他任务而暂停,建议他们稍后重试。这是我们平台提供的一项支持能力,以确保数据源的稳定性和变更的有序进行。

7、onlineddl 配置页面的规则级别是什么意思?

关于online DDL的配置规则级别,我们设定了不同的规范等级。当某个circle不满足当前规范时,我们会根据违规的严重程度进行分级提示。轻微的违规,我们会以黄色图标建议改进;而严重违规,则可由管理员或DBA自定义为必须改进的红色级别。每个等级对应不同的审批流程。 对于符合规范的circle,我们将给予绿色标识,并可允许免批执行。若为建议改进的黄色级别,可能需要研发人员或其领导进行审批。而必须改进的红色级别,则可能需要研发领导、DBA甚至安全管理人员进行多层审批。 具体到online DDL,若无法执行online操作,我们会给出相应级别提示,并告知研发人员或DBA当前存在的风险。这样,我们可以确保每个circle都按照既定的规范执行,从而保障系统的稳定性和安全性。

8、比如我要处理大规模数据的迁移,是否支持各种不同的数据格式和数据库?主要考虑数据的一致性和完整性

关于数据复制,它支持大规模的数据迁移,包括全量数据的迁移和增量数据的实时迁移。在迁移过程中,我们确保源数据与目标数据实质一致,保持数据的一致性。 此外,我们还提供数据对比功能,允许用户在迁移期间或迁移完成后进行全量结构对比和全量数据对比。值得一提的是,无论是数据迁移还是数据对比,我们都支持异构数据源。例如,您可以将Oracle数据库迁移到PG,或将Oracle数据库迁移到MySQL等。无论数据源的类型或数据格式如何,我们都能够支持这种复制迁移的需求。
NineData 《使用数据库规范保障生产环境稳定与安全》

本文来自投稿,不代表TakinTalks稳定性技术交流平台立场,如若转载,请联系原作者。

(0)
上一篇 2024年1月12日 下午3:30
下一篇 2024年3月8日 下午4:24

相关推荐

发表评论

登录后才能评论