mysql优化的策略

1. 配置参数
  • 索引缓冲区长度key_buffer_size,推荐设置为可用内存的25%,目的是缓冲更多的索引
  • 表缓冲长度 read_buffer_size,目的缓冲最常用的表
  • 慢查询日志时间阈值 long_query_time,可以获取查询的时间瓶颈
2. 添加索引
  • 为user表的username字段添加索引
    CREATE INDEX idx_username ON user(username)
3. explain
  • explain 放在select之前用于解释语句的执行过程,我们可以用它来分析当前语句的优化效果
    重要的三个输出行:
  1. type: 联接的类型
    • const:最优,使用primary key或者unique key检索,最终只得到一条数据
    • ref: 较好,在多个表联接,只使用最左边的前缀,也就是第一个表的非primary和unique字段时使用。
    • range:使用一个索引来检索一个范围内的行
    • all: 对多个表的联接进行完全的扫描,最差
  2. keys:使用的索引
  3. extra:查询的详细信息
    • range checked for each record: 没有找到合适的索引
    • using filesort: 使用了排序,一般这种情况需要为排序的列添加index
    • using temporary: 使用了临时表容纳结果
4. profiler
  • 用于监测sql语句的性能瓶颈
    set profiling = 1
    show profiles //显示所有查询,其中QUERY_ID可以用于下一条语句
    show profile [] for QUERY [] //查看某条查询CPU,IO等消耗
5. 查询大表
  • 核心思想就是避免全表扫描

你可能感兴趣的:(mysql优化的策略)