LOADING······

加载过慢请开启缓存 浏览器默认开启 绝对不是网站的问题[确信]

MySql数据库优化方法

MySql数据库优化方法

当数据库中存放大量数据或者需要提升数据库性能时我们该怎么做

  1. 首先我们看看可以从哪些方面优化数据库,然后解决对应的问题
    1. 架构优化
    2. 硬件优化
    3. DB优化
    4. sql优化
  • 越往上优化越明显,接下来我们来看具体该怎么操作

架构优化

  1. 架构优化常见的优化手段有:分布式缓存,读写分离,分库分表等

    1. 分布式缓存 我们可以在应用与数据库之间引入一个缓存服务,比如redis。当我们接收到查询请求之后,会先访问缓存里是否有数据,如果没有就从数据库加载到缓存中,如果有就直接返回
    
    2. 读写分离  如果应用的读取多,写入少那我们可以采用读写分离 主库处理写操作,多个从库处理读操作。主库与从库的数据要实时同步
    
    3. 分库分表 把一个库水平切分成两个库可以降低数据库单库容量,提升数据库写性能
    
    方法 实施方式 作用 使用场景
    分布式缓存 引入redis缓存 减少数据库访问,加快读操作 高并发,数据量大
    读写分离 主库处理写,从库处理读 分摊读压力,提高并发能力 提高数据库读性能
    分库分表 水平切分,垂直切分 减少单表数据量 数据库数据量大的问题

硬件优化

  1. 硬件优化 非常直接的解决方案,我们来看一下最直接的存储设备的对比
名称 速率 价格
机械硬盘 100mb/s~200mb/s 还行
固态硬盘 800mb/s~1024mb/s
PCIE固态硬盘 11800mb/s~12400mb/s 好贵
  • 当然以上速率数据只是理论,实际上会更快/慢一点,硬件优化不单单指优化储存设备,服务器整体的升级也很重要

DB优化(数据库配置)

  1. 日志 平衡性能
  2. 缓存 减少磁盘I/O
  3. 连接 提高并发处理能力
mysql根目录的配置文件
[mysqld]
# 内存管理
innodb_buffer_pool_size = 64G  # 物理内存70-80%
innodb_log_file_size = 4G       # 日志文件大小
innodb_log_buffer_size = 256M   # 日志缓冲区

# I/O优化
innodb_io_capacity = 20000      # SSD配置
innodb_flush_method = O_DIRECT  # 避免双缓冲

# 连接管理
max_connections = 1000          # 最大连接数
thread_cache_size = 100         # 线程缓存

# 查询优化
innodb_stats_on_metadata = OFF  # 避免统计信息更新影响

sql优化

  • 给查询字段添加索引或者改写sql提高其执行效率
  1. 索引优化
  2. 查询重构
  3. 分页优化

当然理论与实际之间有所区别,当实际解决数据库优化问题时应当灵活选择解决方案