MySQL大表优化方案之升级硬件

升级硬件

Scale up,这个不多说了,根据MySQL是CPU密集型还是I/O密集型,通过提升CPU和内存、使用SSD,都能显著提升MySQL性能

读写分离

也是目前常用的优化,从库读主库写,一般不要采用双主或多主引入很多复杂性,尽量采用文中的其他方案来提高性能。同时目前很多拆分的解决方案同时也兼顾考虑了读写分离

缓存

缓存可以发生在这些层次:

  • MySQL内部:在系统调优参数介绍了相关设置
  • 数据访问层:比如MyBatis针对SQL语句做缓存,而Hibernate可以精确到单个记录,这里缓存的对象主要是持久化对象Persistence Object
  • 应用服务层:这里可以通过编程手段对缓存做到更精准的控制和更多的实现策略,这里缓存的对象是数据传输对象Data Transfer Object
  • Web层:针对web页面做缓存
  • 浏览器客户端:用户端的缓存

可以根据实际情况在一个层次或多个层次结合加入缓存。这里重点介绍下服务层的缓存实现,目前主要有两种方式:

  • 直写式(Write Through):在数据写入数据库后,同时更新缓存,维持数据库与缓存的一致性。这也是当前大多数应用缓存框架如Spring Cache的工作方式。这种实现非常简单,同步好,但效率一般。
  • 回写式(Write Back):当有数据要写入数据库时,只会更新缓存,然后异步批量的将缓存数据同步到数据库上。这种实现比较复杂,需要较多的应用逻辑,同时可能会产生数据库与缓存的不同步,但效率非常高。

表分区

MySQL在5.1版引入的分区是一种简单的水平拆分,用户需要在建表的时候加上分区参数,对应用是透明的无需修改代码

对用户来说,分区表是一个独立的逻辑表,但是底层由多个物理子表组成,实现分区的代码实际上是通过对一组底层表的对象封装,但对SQL层来说是一个完全封装底层的黑盒子。MySQL实现分区的方式也意味着索引也是按照分区的子表定义,没有全局索引

MySQL大表优化方案之升级硬件

用户的SQL语句是需要针对分区表做优化,SQL条件中要带上分区条件的列,从而使查询定位到少量的分区上,否则就会扫描全部分区,可以通过EXPLAIN PARTITIONS来查看某条SQL语句会落在那些分区上,从而进行SQL优化,如下图5条记录落在两个分区上:

本文来自投稿,不代表重蔚自留地立场,如若转载,请注明出处https://www.cwhello.com/4601.html

如有侵犯您的合法权益请发邮件951076433@qq.com联系删除

(0)
重蔚的头像重蔚管理团队
上一篇 2018年3月10日 16:35
下一篇 2018年3月10日 16:44

相关推荐

  • 分享mysql怎么卸载干净。

    MySQL是一种广泛使用的开源关系型数据库管理系统,它可以帮助用户存储、管理和检索数据,有时候用户可能需要卸载MySQL以释放磁盘空间或进行其他系统维护操作,本文将介绍如何在不同操作系统上卸载MySQL并确保彻底清…

    2024年6月20日
    02
  • 教你怎么在SAP ABAP编程环境里创建自己的Z表「sap abap教程」。

    在SAP ABAP编程环境中创建自己的Z表,可以按照以下步骤进行操作: 1. 打开SAP ABAP编程环境:你需要登录到SAP系统,并进入ABAP编程环境,可以通过SAP NetWeaver门户或者SAP Easy Access菜单中的”ABAP”…

    2024年6月14日
    04
  • php操作mysql的具体的操作流程

    链接数据库 mysql_connect(‘服务器地址’,’用户名’,’密码’); 选择数据库并设置编码 选择数据库:mysql_select_db(‘数据库名’); 设置通信编码:mysql_ query(‘set names utf8’); 准备SQL语句 发生的语句分三大类:库…

    2018年3月23日 PHP自学教程
    0218
  • PHP与数据库灾备恢复的集成。

    在当今高度数字化的时代,数据已经成为企业的核心资产,尤其是对于那些公司依赖于电子商务和在线活动的企业而言。然而,任何一个生产环境中,都可能会遇到各种各样的数据库灾难,如人为疏忽、硬件故障、自然灾害、…

    2023年5月21日
    00
  • 我来说说aspnet做网站好吗。

    ASP.NET是一个免费的web框架,用于使用HTML、CSS和JavaScript构建强大的网站和web应用程序。它还可以创建WebApi并使用Web套接字等实时技术。 ASP.NET Core是ASP.NET的一种替代方法,也可以理解为ASP.NET的升级。 AS…

    2024年7月9日
    07
  • 我来分享如何在mysql中轻松修改数据表结构类型。

    在MySQL中,数据表结构是定义数据库中存储的数据类型和属性的方式,随着应用程序的发展,您可能需要修改数据表结构以满足新的需求,在本教程中,我们将介绍如何在MySQL中轻松修改数据表结构。 (图片来源网络,侵删…

    2024年6月20日
    07
  • 教你mysql删除数据库。

    MySQL删除数据库的命令是`DROP DATABASE`,其基本语法如下: DROP DATABASE database_name; `database_name`是你想要删除的数据库的名称,这个命令会立即删除指定的数据库,并且不会将其数据复制到其他地方,在执行…

    2024年6月20日
    03
  • MYSQL涉及的英语单词!

    sql: struct query language mysql: host:主机 user:用户 password:密码 data:数据 database:数据库 table:表 column:列 field:列 row:行 port:端口 quit:取消,退出 exit:退出 charset:字符集,字符编…

    2018年4月30日
    0735

联系我们

QQ:951076433

在线咨询:点击这里给我发消息邮件:951076433@qq.com工作时间:周一至周五,9:30-18:30,节假日休息