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

GaussDB 数据库高级特性—分钟级弹性扩展

只读节点增加流程

  • 优势:新增只读节点,对比Shared-Nothing架构,GaussDB(for MySQL)架构下不需要进行数据的均衡,增加只读节点的时间不依赖数据量;
    • 元数据初始化包括:Redo Log同步位点,活跃事务状态信息等,数据量很少;
    • 数据库根据元数据信息进行初始化;
    • 初始化过程中会读取系统表页面,不会初始化写数据模块;
    • 读取Redo数据,更新备机页面失效状态,以确保读取到最新数据;
    • 备机运行时,持续同步元数据信息;

只读性能线性扩展原理

  • 只读节点只与主节点交互元数据信息,数据量小,不会影响主机性能;
  • 只读节点都是独立的CPU和内存,每个节点都可以提供相同的读扩展性能;
  • 只读节点间没有交互,扩展新的只读节点,不会影响已有只读节点的性能,最大可以扩展到15个只读节点;

存储空间扩展原理

  • 数据分布式存储,一个数据库Instance的数据会存储在不同的存储服务器中,可以利用整个存储池的资源进行扩展;
  • 分片数据库是一块固定大小的数据空间,保存于一块SSD盘中,一个存储服务器可以管理多块分片数据;
  • 当前已有分片数据空间使用完后,计算层可以实时申请1块或多块分片数据,过程由计算层内核完成,对业务层透明,耗费时间仅为毫秒级别;
  • 计算层对已使用分片数据空间进行实时计算,提前申请新的分片数据空间,业务对数据扩展完全无感知;

删除数据,如何减少存储空间

  • 数据库使用时,明明删除了数据,为什么存储空间不会减少?
  • Delete和Truncate的区别
    • Delete是在每一行记录上标记为“删除”,并不真正删除数据,因此不会减少使用空间;
    • Truncate会重建一个一模一样的空表,再把原来的表删除,是真正的物理删除,会减少使用空间;
Delete Truncate
条件删除
删除速度
是否会减少使用空间
是否重置自增计数器

CPU内存扩展原理

  • 传统的虚拟机/容器的CPU/内存扩展原理
    • 由于CPU/内存的修改,往往需要把虚拟机/容器迁移到另外一台服务器上,因此修改过程中,需要停止虚拟机/容器,完成规格变更后再开机;
    • 业务的停止时间就比较久,一般都是分钟级的中断时间;
  • GaussDB(for MySQL)扩展节点不需要还原数据,可基于些原理来修改规格。
    • 规格升降级,5分钟生效。通过直接创建新规格节点来替换原有规格的节点,由于新节点创建过程中,老节点仍然可以服务,整个过程中只需要进行一次切换,因此业务的中断时间只有秒级;

典型扩展场景

  • 扩展原则:优先扩容CPU/内存,其次扩容只读节点;
  • 写入较多的场景下,如果CPU使用率已经达到100%,扩容CPU/内存。如果CPU没有达到100%,没有必要扩容;
  • 读较多的场景下,优先扩容CPU/内存,如果在最大规格下,使用率达到100%,则可以新增只读节点,进一步提升读性能;
CPU负载高的常见原因 是否需要扩容 优化建议
业务压力大 参考扩展原则
存在慢SQL 优先优化慢SQL,扩展并不能解决慢SQL带来的风险
连接数过多 如果是读较多的业务,可以通过扩展只读节点扩展解决
网络时延大 特征是:达到一定并发数后,再增加并发数,CPU升高,但是性能不提高。可以从应用端ping数据库,时延超过200微秒时,建议改善网络条件。
  • 是否CPU达到100%就一定要扩容呢?答案是:否。数据库的CPU达到100%的原因有很多,需要具体分析后才能决定是否需要扩容,表格中是常见的导致CPU负载高的场景,以及提供的优化建议。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论