此发布清单列出了在 Spanner 上发布生产应用之前需要考虑的事项。它并非详尽无遗,但旨在突出可能会对生产性能产生巨大影响的方面。
选择合适的实例配置
选择符合您要求的实例配置(区域性或多区域)。
如果选择多区域实例类型,则访问 Spanner 的应用应靠近主要区域,您可以在instances页面上找到更多详细信息。
设计适合规模性能的架构
Spanner 的关系型数据架构类似于传统的关系型数据库,但需要考虑一些细微差别:
了解性能因素
分片自动进行且数据随后存储在分块中,则查询的针对性越强,性能就越好。缩小到单个交错父表及其所有子表的查询性能要好于影响多行的查询或操作。
我们强烈建议进行大规模基准化分析和测试,以确保在发布之前发现问题和瓶颈。Spanner 提供了查询执行计划,您可以在架构设计期间与表搭配使用,以了解查询可能如何执行。
需要考虑的其他性能因素:
- 在不写入数据时,优先选择只读事务,而不是更贵的读写事务。
- 妥善设计您的应用以最大限度减少事务中的分块参与者。Spanner 可以跨不同服务器上的行执行事务;然而,相比那些涉及分散在整个数据库或一个大型表中的许多行的事务,只涉及相邻的许多行的事务通常执行速度更快、开销更小。
- 使用查询参数而不是字符串字面量来改善查询性能和统计信息监控。
了解限制和配额
出于架构方面的考虑,同时也为了保持其高性能和冗余,Spanner 具有在应用设计时应考虑的特定配额和限制。您可以提前增加配额。
例如,每个提交最多只能包含 80,000 项变更,每个查询最多包含 15 个联接。
这些限制以及架构设计和热点防范都会影响批量加载,因此请务必遵循批量加载最佳做法。
确保已设置监控功能
设置 Cloud Monitoring 以在达到限制时收到提醒。
如果达到性能指标,请增加计算容量 Spanner 实例的线性伸缩。对于区域性实例,我们建议将 CPU 利用率控制在 65% 以下;对于多区域实例,建议控制在 45% 以下。
在数据库的查询页面上使用查询模板,在查询统计信息表中监控查询统计信息。
制定数据迁移策略(如有需要)
在 Spanner 中批量加载数据时,应考虑分布式架构以保持性能:
此博文是实现高吞吐量写入的一个良好示例。
确保已完成安全配置
设置相关的 IAM 角色以管理数据库和实例级层的安全性。表级层的安全性必须在应用内进行管理。
了解支持方式
确保您已制定获取支持的策略。