mysql优化思路

作者: JONE 分类: 编程 发布时间: 2021-04-10 16:46

1、三范式:

  • 表的列具有原子性,
  • 表的行数据具有唯一性,通常通过主键自增来实现
  • 表种不要有冗余数据,能通过逻辑推导出来的数据就不要单独存储
  • 反三范式:没有冗余的数据库末必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。降低范式就是增加字段,允许冗余。

2、SQL语句优化

  • 查询当前mysql服务器的运行状态( show status),查看当前数据库服务器的查询\写入\更新的操作数量、客户端链接的数量、显示慢查询次数
  • 定位查找执行比较慢的sql语句(定位慢查询,默认执行时间超过10秒为慢查询)
  • show variables like ‘long_query_time’; //  查询慢查询时间
  • set long_query_time = 1; // 设置慢查询时间为1秒
  • 把慢查询的结果记录到指定的日志文件中
  • 通过 explain 分析sql语句的执行细节,主要看sql语句使用了哪些索引

3、索引:主键索引、普通索引、唯一索引、全文索引、(复合索引)

  • 当某列设置为主键后,则该列自动创建了主键索引
  • show index from  table_name; // 查询表的索引
  • 复合索引适用最左索引原则
  • like查询,最左字符串不确定无法调用索引
  • or 条件查询,必须所有条件字段都有索引,否正无法调用索引
  • 字符串类型必须用引号包裹住,不然无法调用索引
  • mysql觉得全表扫描速度更快,那么也不会调用索引
  • 查看索引使用情况 show status like ‘Handler_read%’;  // Handler_read_key  值越低,Handler_read_rnd_next 越高 那么使用的效果越好。

4、分表技术:水平分表、垂直分表

5、读写分离

6、存储过程

7、配置优化:并发大小、缓存大小

8、mysql服务器硬件升级

9、myisam引擎需要清理不需要的数据和碎片化