iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL高性能架构设计原则有哪些
  • 215
分享到

MySQL高性能架构设计原则有哪些

2024-04-02 19:04:59 215人浏览 独家记忆
摘要

这篇文章主要讲解了“Mysql高性能架构设计原则有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql高性能架构设计原则有哪些”吧!01. 

这篇文章主要讲解了“Mysql高性能架构设计原则有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql高性能架构设计原则有哪些”吧!

01.  技术选型

选择成熟的平台和技术,同时是最熟悉的,能做到极致的,用好不用坏,用熟不用生。目前业界的Mysql主流分支版本有oracle官方版本的MySQL、Percona Server、MariaDB。

02.  高可用选择

高可用解决方案探讨的本质上是低宕机时间解决方案,可以理解成高可用的反面是不可用,绝大部分情况下数据库宕机才会导致数据库不可用。随着技术发展,开源数据库方面很多高可用组件(主从复制、半同步、MGR、MHA、Galera Cluster),对应场景,只有适合的,没有万能的,需要理解每个高可用优缺点。

03.  表设计

表设计方面目前一致坚持和提倡的原则:

  •  单表数据量

        所有表都需要添加注释,单表数据量建议控制在 3000 万以内

  •  不保存大字段数据

        不在数据库中存储图片、文件等大数据

  •  表使用规范

         拆分大字段和访问频率低的字段,分离冷热数据

         单表字段数控制在 20 个以内

       1.单张表中索引数量不超过 5 个

       2.单个索引中的字段数不超过 5 个

       3.INNODB 主键推荐使用自增列,主键不应该被修改,字符串不应该做主键,

       如果不指定主键,INNODB 会使用唯一且非空值索引代替

       4.如果是复合索引,区分最大的字段放在索引前面

       5. 避免冗余或重复索引:合理创建联合索引(避免冗余)

       6. 不在低基数列上建立索引,例如‘性别’

       7. 不在索引列进行数学运算和函数运算

  •  字符集utf8mb4(偏生字,表情符)

04.  优化原则

MySQL高性能架构设计原则有哪些

05.  复制方式

MySQL复制方式提供异步方式、半同步方式、全局事务强一致性、binglog同步。需要不同业务系统间 或 两个数据库间进行同步。异步方式可以防止故障和效率问题的蔓延,扩大化;但强一致性会更复杂,并发、事务大小都有求限制。

06.  分离原则

区分核心的业务,重要业务,渠道,内部业务的业务系统,对不同的系统设置不同的架构。为核心业务设置 最佳为分库,多活 专用高速公路,其他业务可以做读写分离,缓存

07.  扩展性

对于系统来说扩展性很重要,尽量做到水平扩展。避免过度依赖纵向扩展,同时具备纵向,横向扩展的能力,例如无状态应用应该多套负载均衡多活部署,数据库分库架构。

08.  读写分离

  •  读多写少场景(10%写 90%读)

  •  复制存在延迟,业务对延迟不敏感的

  •  实现方式:

        1. 通过应用代码配置读写分离,

        2. 通过中间代理方式路由只读库 &

        3. 业务和数据库为一个单位

09.  分库分表

  •  当表中数据记录的数量超过3000万条,再好的索引也已经不能提高数据查询的速度,这时需要将表拆分成更多的小表,增加性能,增加弹性,避免发生垮库进行操作。

  •  引入中间价要考虑性能代价,聚合需求。

  •  分库原则尽量在app 上层进行分库,就是流量。

  •  分多少合适:可用性和性能满足TPS。

  •  路由:写入配置文件 或则 插表 或则 ZooKeeper

10.  归档原则

历史数据定期进行归档 或则 移到其他大数据平台。能让轻量级数据库更多缓存有用的数据。

在MySQL分区表里 注意要避免分区,只能写读的场景。

11.  连接池的要求

长链接,自动重链,延时和异常记录, 弹性链接,检测满,异常告警,进阶要求

是记录所有访问情况,可以扩展出很多能力。

应用和数据库连接池设置,数据库允许的连接数设置,常见问题。

A )应用的数据库连接池设置偏小,一旦数据库相应慢(新上线应用,缺少索引 等)则应。

用排队严重,甚至雪崩,而遗憾的是数据库能力还远为用尽。

B )不具备失效及时发现和重新链接数据库能力。

C )隔离级别设置:RR 和 RC下不同的表现。

12.  应用解耦

通过应用访问数据库而不是直接访问,重要业务不能依赖低保障级别的系统,应用层重要业务和普通业务解耦,关键业务要独立。

13.  组件失效免疫能力

单一应用,单一硬件,甚至单一基础设施,单一站点容灾,业务影响,故障恢复能力,要季度级别进行演练。

14.  关键词组件减负

特别是数据库访问,数据库成本最高,扩展性最难,可用性保障最难,恢复难度和时间最大。

减负:能不用就不用,使用最简单,成本最低的语句,避免大事务,慎用两阶段事务。

15.  灰度数据库

减少发布时变更数据库对全局的影响,只有应用程序灰度是不够的,还要有专门的灰度数据库。在分库、读写分离架构下,一套含数据库的完整应用架构,变的很自然。

所为灰度环境就是生产环境,生产数据,所影响的也是生产环境,只是范围比测试环境更广,更真实。其实就是小范围的生产环境。类似于游戏内测。

16.  高仿真架构体系

建立高仿真架构体系

  •  数据库,操作系统升级:应用是否适应,性能会变好, 还是变坏

  •  应用上线发布,系统变更(列如换平台),提前判断业务影响和性能瓶颈

  •  应对突发交易量,例如双十一,性能极限在哪里,瓶颈在哪里。

17.  容灾保障

高可用是运维核心要求,容灾是最后屏障

例如 双活比单活好,MGR比复制架构好,重要系统要做好高可用,容灾建设。

18.  多中心建设

冗余是基础,多中心建设是为了提升容灾能力和扩展能力,并保障业务。

19.  应用和数据库是一个整体

应用和运维人员一起,解决应用解耦,数据库解耦,追账补数,业务监控,应用路由,故障切换等。可用性,效率,故障恢复等方面都要一起参与。

20.  性能提升

开源数据库使用应该合理且有效的结合周边的其他类型数据库,做到性能最大化。比如:RedismongoDB、ES、ClickHouse等。

总结

1. 最适合的架构是结合软件特性和业务场景,又能取得成本收益平衡;

2. 大数据情况下可以是利用读写分离、分库分表,但要选择合适的;

3. 不适合分库的应该考虑竭尽所能把核心库做小,然后通过垂直扩展来扩容;

4. 用尽各种技术, 高可用 和 容灾手段保证其可用。

感谢各位的阅读,以上就是“MySQL高性能架构设计原则有哪些”的内容了,经过本文的学习后,相信大家对MySQL高性能架构设计原则有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL高性能架构设计原则有哪些

本文链接: https://www.lsjlt.com/news/62033.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL高性能架构设计原则有哪些
    这篇文章主要讲解了“MySQL高性能架构设计原则有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL高性能架构设计原则有哪些”吧!01. ...
    99+
    2024-04-02
  • C++ 中高性能服务器架构的设计原则
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-14
  • MySQL索引设计原则有哪些
    这篇文章主要介绍了MySQL索引设计原则有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL索引设计原则有哪些文章都会有所收获,下面我们一起来看看吧。哪些情况适合创建...
    99+
    2023-01-31
    mysql
  • PHP中的高性能架构设计
    PHP语言作为一种开源的高级编程语言,已经成为了互联网应用开发的主流之一。与此同时,随着互联网应用的复杂性和流量的增大,越来越多的企业和开发者开始关注PHP性能的优化问题。在这篇文章中,我们将探讨PHP中的高性能架构设计。PHP的性能问题在...
    99+
    2023-05-23
    PHP 高性能 架构设计
  • Java中有哪些设计原则
    本篇文章给大家分享的是有关Java中有哪些设计原则,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、单一职责原则(SingleResponsibilityPrinciple,S...
    99+
    2023-06-15
  • Design Pattern设计原则有哪些
    这篇文章给大家分享的是有关Design Pattern设计原则有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Design Pattern 笔记过于僵硬:不能轻松的加入新的功能过于脆弱:修改一处可能波及到很多...
    99+
    2023-06-03
  • rest api设计原则有哪些
    遵循HTTP协议:REST API应该遵循HTTP协议的规范,使用HTTP方法(GET、POST、PUT、DELETE)来操作资源,...
    99+
    2023-10-19
    restapi
  • 架构设计的五大原则-SOLID
    1.背景最近在读《架构整洁之道》这一本书,这本书的确写得不错,最近也没有更新文章,一方面再忙工作,另一方面也再啃一些书。当然文章还是得更新,《架构整洁之道》里面有些有意思的内容我会提取出来外加自己的思考。在这本书里面的第三章介绍了设计原则,...
    99+
    2023-06-05
  • java设计模式有哪些原则
    这篇文章将为大家详细讲解有关java设计模式有哪些原则,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。设计模式软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数...
    99+
    2023-06-20
  • JavaScript中API设计原则有哪些
    本篇文章为大家展示了JavaScript中API设计原则有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、接口的流畅性好的接口是流畅易懂的,他主要体现如下几个...
    99+
    2024-04-02
  • openstack的架构设计原则是什么
    OpenStack的架构设计原则包括以下几个方面: 模块化和可扩展性:OpenStack的架构采用模块化设计,将不同功能的组件划...
    99+
    2023-10-25
    openstack
  • MySQL数据库有哪些常用架构设计
    本篇文章给大家分享的是有关MySQL数据库有哪些常用架构设计,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、MySQL引擎MySQL提供了两...
    99+
    2024-04-02
  • 系统架构设计高级技能 · 云原生架构设计理论与实践
    系列文章目录 系统架构设计高级技能 · 软件架构概念、架构风格、ABSD、架构复用、DSSA(一)【系统架构设计师】 系统架构设计高级技能 · 系统质量属性与架构评估(二)【系统架构设计师】 系统架构设计高级技能 · 软件可靠性分析与设计(...
    99+
    2023-08-30
    系统架构 云原生
  • Java设计模式的原则有哪些
    本文小编为大家详细介绍“Java设计模式的原则有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java设计模式的原则有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。设计模式的六大原则:1、单一职责原则,...
    99+
    2023-07-04
  • php设计模式的原则有哪些
    PHP设计模式的原则包括以下几个:1. 单一职责原则(Single Responsibility Principle,SRP):一个...
    99+
    2023-08-14
    php
  • html5需遵循的设计原则有哪些
    今天就跟大家聊聊有关html5需遵循的设计原则有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。实际上,html5并不是由w3c直接制定的,w3c...
    99+
    2024-04-02
  • Java中设计模式的原则有哪些
    本篇文章给大家分享的是有关Java中设计模式的原则有哪些,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Java中的设计模式与7大原则:一、创建型模式抽象工厂模式(Abstrac...
    99+
    2023-05-31
    java 设计模式 ava
  • golang架构设计开闭原则手写实现
    目录缘起开闭原则场景思路ICourse.goGolangCourse.goIDiscount.goDiscountedGolangCourse.goopen_close_test.g...
    99+
    2024-04-02
  • 探讨设计灵活且高效的Hadoop数据架构的原则
    设计灵活且高效的Hadoop数据架构的原则包括: 数据分布和存储:确保数据能够有效地分布和存储在Hadoop集群中,以便快速访问...
    99+
    2024-02-29
    Hadoop
  • kafka性能高的原因有哪些
    Kafka性能高的原因有以下几个方面:1. 高吞吐量:Kafka使用分布式架构,可以通过水平扩展来增加处理能力。它可以处理每秒数百万...
    99+
    2023-10-21
    kafka
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作