mysql优化思路

144次阅读
没有评论

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 引擎需要清理不需要的数据和碎片化

正文完
有偿技术支持加微信
post-qrcode
 
评论(没有评论)
验证码