Mysql如何优化数据查询方案

  1. mysql做读写分离
    读写分离是提高mysql并发的首选方案。
  1. Mysql主从复制的原理
    mysql的主从复制依赖于binlog,也就是记录mysql上的所有变化并以二进制的形式保存在磁盘上,复制的过程就是将binlog中的数据从主库传输到从库上。
    主从复制过程详细分为3个阶段:

    第一阶段:主库写binlog。提交数据,并更新本地数据。

第二阶段:同步binlog。binlog复制到所有从库上。每个binlog写到暂存日志中。

第三阶段:回放binlog。并更新存储数据。

mysql默认是异步模式。mysql主库提交事务的线程并不会等待binlog同步到各从库,就返回客户端结果。这种模式一旦主库宕机。数据就会发生丢失。

Mysql主从复制还有哪些模型?

电商平台的商品评论的实际案例,设计一个主从复制的延迟方案

  1. 主从复制延迟导致的异常的处理方案:
    1)直接查询主库
    该方案在使用时要提前明确查询的数据量不大,不然会出现主库写请求锁行,影响读请求的执行,最终对主库造成比较大的压力。

2)使用数据冗余。

可以在异步调用审核模块时,不仅仅发送商品ID,而是发送审核模块需要的所有评论信息,借此避免在从库中重新查询数据,但你要注意每次调用的参数大小,过大的消息会占用网络带宽和通信时间。

3)使用缓存解决

可以在写入数据主库的同时,把评论数据写到redis缓存里,这样其他线程在获取评论信息时,会优先查询缓存,也可以保证数据的一致性。

  1. 当 MySQL做了主从分离后,以前只需要使用一个数据库地址操作数据库,现在却要使用一个主库地址和多个从库地址,并且还要区分写入操作和查询操作,那从工程代码上设计,怎么实现主库和从库的数据访问呢?
相关推荐
村口蹲点的阿三2 小时前
Spark SQL 中对 Map 类型的操作函数
javascript·数据库·hive·sql·spark
苹果醋33 小时前
golang 编程规范 - Effective Go 中文
java·运维·spring boot·mysql·nginx
暮湫4 小时前
MySQL(1)概述
数据库·mysql
fajianchen4 小时前
记一次线上SQL死锁事故:如何避免死锁?
数据库·sql
chengpei1474 小时前
实现一个自己的spring-boot-starter,基于SQL生成HTTP接口
java·数据库·spring boot·sql·http
叫我:松哥4 小时前
基于Python django的音乐用户偏好分析及可视化系统设计与实现
人工智能·后端·python·mysql·数据分析·django
中东大鹅5 小时前
MongoDB的索引与聚合
数据库·hadoop·分布式·mongodb
天天向上杰6 小时前
简识Redis 持久化相关的 “Everysec“ 策略
数据库·redis·缓存
Leaf吧7 小时前
springboot 配置多数据源以及动态切换数据源
java·数据库·spring boot·后端
狮歌~资深攻城狮7 小时前
TiDB出现后,大数据技术的未来方向
数据库·数据仓库·分布式·数据分析·tidb