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

相关推荐

  • 教你美国空间网址。

    “美国空间网址”可能指的是专注于空间探索、创新和天文学新闻的Space.com。该网站致力于庆祝人类在这片最终边疆的持续拓展。 ASP美国空间配置 在互联网行业中,ASP(Application Service Provider)是一…

    2024年7月13日
    00
  • 重蔚自留地php学习第三十八天——关于高级数据库操作的语法总结

      高级数据操作:having,order by ,limit 联合查询:(select语句 order by limit) union [union选项] (select语句 order by limit) 连接查询:内连接,外连接,自然连接和交叉连接 内连接:左表 [inner] joi…

    2018年10月19日
    0436
  • 如何兼容 MySQL + ES + MongoDB 实现上亿数据的深度分页?

    面试题 & 真实经历 大家在面试时,或者准备面试中可能会遇到上述的问题,大多的回答基本上是分库分表建索引,这是一种很标准的正确回答,但现实总是很骨感,所以面试官一般会追问你一句,现在工期不足,人员不…

    2022年6月12日 PHP自学教程
    0138
  • PHP与数据库队列的集成。

    随着现代Web应用的发展,越来越多的需要将任务异步处理,以提高网站的性能和用户体验。其中一种常见的方式是使用队列系统,将需要处理的任务排队,然后由后台进程异步处理。而PHP和数据库都是Web开发中广泛使用的工…

    2023年5月21日
    03
  • 关于asp的数据库文件怎么打开。

    在ASP中打开两个数据库 ASP(Active Server Pages)是一种动态网页开发技术,它允许开发人员在服务器端执行脚本来生成动态内容,在ASP中,可以使用ADO(ActiveX Data Objects)对象来连接和操作数据库,要在ASP中打…

    2024年6月30日
    00
  • 聊聊html怎么获取数据库数据。

    HTML是一种标记语言,用于创建网页的结构,它本身并不具备从数据库查询数据的功能,我们可以通过结合其他技术(如JavaScript、PHP、ASP.NET等)来实现从数据库查询数据并在HTML页面上展示。 (图片来源网络,侵删)…

    2024年6月24日
    01
  • 关于怎么查看postgresl的版本信息。

    要查看PostgreSQL的版本信息,可以在命令行中输入psql --version。 PostgreSQL是一种功能强大的开源对象关系数据库系统,它提供了丰富的功能和灵活的配置选项,在开发和管理PostgreSQL数据库时,了解其版本信息是非…

    2024年7月15日
    00
  • 不限流量云vps租用怎么加速。

    要加速不限流量云VPS的租用,可以尝试以下方法:1.选择合适的地理位置:选择离您所在地区较近的服务器位置,可以减少网络延迟,提高访问速度。2.使用CDN加速:CDN是一种内容分发网络,可以将您的网站内容缓存到全球…

    2024年7月17日
    00

联系我们

QQ:951076433

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